Mysql索引解释道

时间:2015-04-04 14:19:00

标签: mysql

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'

这些基本相同吗?

1 个答案:

答案 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/有很多关于索引的信息。