如果我有这个索引:
(col1,col2,col3)
我知道在搜索(col1)时它会有所帮助; (col1,col2); (col1,col2,col3)。
如果我使用完全相同的列创建另一个索引,phpMyAdmin将警告我可能会删除其中一个索引,因为它们是相同的。
但是,如果我有这些索引:
(col1,col2,col3)
(col1,col2)
(COL1)
phpMyAdmin根本不会警告我。
所以我的问题是,是最后两个必要的索引吗?我认为只有第一个索引足够。
谢谢。
答案 0 :(得分:3)
MySQL只会使用一个索引(最左边)来优化搜索。引自文档:
但是,如果任何索引都是独一无二的,那么他们可能有充分的理由去那里。
如果在分析过程中发现任何列经常彼此分开使用,那么您应该考虑为每个列添加单独的索引以优化这些查询。
E.g。
ALTER TABLE tablename ADD INDEX (col1), ADD INDEX (col2), ADD INDEX (col3);