什么“索引PRIMARY和id似乎相等,其中一个可能被删除。”意思?

时间:2011-03-31 21:12:39

标签: mysql indexing

Indexes 这是什么意思,我该如何解决?

2 个答案:

答案 0 :(得分:15)

您在表的同一字段上有两个单独的索引(id)。其中一个是将id设置为PRIMARY KEY,另一个可能是明确创建的。只需要其中一个 - 由于额外的索引更新,两者都可能导致性能下降。

只需drop其中一个即可解决此问题。

对表的列(或字段,如果您愿意)具有PRIMARY KEYUNIQUE约束,实质上意味着对于插入的每一行,该列的值应该是唯一的,因此它不应该已经存在于表中。天真的方法是在插入之前读取所有现有行,但是一旦插入了多行,这将使DB 非常变慢。

为了解决这个问题,大多数(全部?)不错的数据库引擎将隐式为这些字段创建索引,以便他们可以快速检测表中是否已存在某个值,而无需扫描所有行。

因此,在声明为PRIMARY KEYUNIQUE的字段上手动创建索引不仅会被还原,而且还可能因维护索引所需的工作重复而导致性能下降。 / p>

答案 1 :(得分:0)

在我看来,它说这两个索引具有完全相同的属性并且只有不同的Keynames,有两个索引将创建额外的存储空间以及插入的运行时间(没有理由这样做我可以想到)关于这个主题的更多细节可以在这里找到:

http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

http://dev.mysql.com/doc/refman/5.0/en/create-index.html

PRIMARY是由phpMyAdmin创建的我相信并且看起来索引是手动创建的,但是重复工作。