【发布时间】:2015-02-22 16:38:47
【问题描述】:
我有一个 MySQL 数据库表,它有超过 3500 万行。我最初创建了一个 id 字段作为主键。但是这个 id 字段只是一个auto_increment 值,它不是我的数据的一部分。但我的主要查询是在一个名为 zipcode 的字段上。
使用WHERE zipcode='' 进行的查询似乎很慢。我意识到索引邮政编码字段可以加快速度。但是,我注意到每个被索引的字段都会占用一定的空间。 zipcode字段的索引只占用75MB,但“id”字段主键索引占用3GB以上。
由于我没有将“id”字段用于任何内容,因此我现在删除了 id 字段并仅将索引保留在 zipcode 字段中。我只是觉得 id 字段无缘无故地占用了空间。没有唯一的 id 字段有什么缺点吗?
还有什么其他方法可以加快对该数据库表的查询速度?
【问题讨论】:
-
如果你附上你的表格列列表会更有帮助:)
-
我删除了您的一个标签:MySQL != SQL Server(后者是 Microsoft 产品)。
-
您的邮政编码字段现在是否声明为
PRIMARY?行应始终通过主键唯一标识(但不必是整数或自增)。 -
@halfer 不,邮政编码字段不是主键,它只是被索引。它不能是主键,因为每个 zipcode 值平均有 25 条记录与之关联。
-
好吧,我会坚持使用主键。 Read more here.