MySQL为同一列提供了多个INDEX键

时间:2011-05-27 02:10:10

标签: mysql phpmyadmin

在MySQL数据库中为同一列提供多个INDEX键是否正确?

例如,id字段使用不同的Keyname索引两次,而phpmyadmin给我一条警告消息:

  

创建了多个INDEX密钥   列id

我想知道是否可以,如果使用此方法对我的脚本或服务器有任何影响或副作用?

我使用此方法为每个索引分组列。

2 个答案:

答案 0 :(得分:9)

将单个列索引两次是没用的,减慢了插入和更新的速度,因为现在你必须(无用地)维护两个索引,并且可能会混淆优化器(如果它实际上没有破坏某些东西)。另一方面,单独索引列然后也作为一个或多个复合键的一部分,这很好(并且通常很有用)。

答案 1 :(得分:1)

理论上,对列和正常索引都有一个反向索引是个好主意。不确定它是否受MySQL支持。

这取决于你要搜索的内容。如果您希望用户搜索姓氏,并且您在同一列中存储名字和姓氏,则许多搜索的格式为

LIKE %lastname

在这种情况下,普通索引将无济于事,因为它从字符串的开头构建索引。它需要查看每个记录,以查看它在某些时候不包含搜索字符串。 反向索引会很有用,因为它从后面和后面索引。使用双索引可以加速这种特殊的搜索。

在开头和结尾都有通配符。