如果我有这个索引:
(col1、col2、col3)
我知道,当我搜索(col1);(col1,col2);(col1,col2,col3)时,它会有所帮助。
如果我用完全相同的列创建另一个索引,phpMyAdmin将警告我,其中一个索引可能会被删除,因为它们是相同的。
但是,如果我有以下索引:
(col1、col2、col3)
(col1,col2)
(col1)
phpMyAdmin一点也不警告我。
所以我的问题是,是最后两个索引在任何情况下都是必需的吗?我认为只有第一个指数是足够的。
谢谢。
发布于 2012-08-16 21:06:12
MySQL将只使用一个索引(最左边)来优化搜索。引用文件的话:
"http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html“
但是,如果任何索引都是唯一的,那么很可能有一个很好的理由让它们存在。
如果您在分析过程中发现,除了其他列之外,还经常使用任何列,那么您应该考虑为每个列添加单独的索引,以优化这些查询。
例如。
ALTER TABLE tablename ADD INDEX (col1), ADD INDEX (col2), ADD INDEX (col3);https://stackoverflow.com/questions/11995310
复制相似问题