FROM: https://dev.mysql.com/doc/refman/5.5/en/multiple-column-indexes.html
MySQL可以对测试索引中所有列的查询使用多列索引,或者只测试第一列,前两列,前三列等的查询。如果在索引定义中以正确的顺序指定列,则单个复合索引可以加速同一个表上的多种查询。
列的使用顺序是否重要?
实施例: id,名字,姓氏,中间名,地址
索引(名字,姓氏,中间名)
索引:
在进行查询时,WHERE的顺序是否重要?
实施例
WHERE first_name ='Chris'和last_name ='Smith'
VS
WHERE last_name ='Smith'和first_name ='Chris'
这些基本相同吗?
答案 0 :(得分:1)
这些基本相同吗?
简短回答 - 是的,它们是一样的。
where子句的顺序并不重要,重要的是所使用的列是否与从左到右的索引列匹配。举个例子:
指数:
(first name, last name, middle name)
Where子句(顺序并不重要):
first name, last name
- 由指数涵盖
last name, middle name
- 未涵盖,因为不包含first name
列。这是因为索引存储为B树,如果您没有提供第一列,则您不会将其命中。
http://use-the-index-luke.com/有很多关于索引的信息。