2015-04-04 38 views
0

FROM: https://dev.mysql.com/doc/refman/5.5/en/multiple-column-indexes.htmlMySQL索引的解释

MySQL能使用多列索引来测试索引中的所有列的查询或查询该测试只是第一列,前两列,前三列, 等等。如果您在索引定义中以正确顺序指定列,则单个组合索引可以加速同一个表上的多种查询。

列的使用顺序是否重要?

实施例: ID,名字,姓,中间名,地址

指数(姓,名,中间名)

索引:

  • 名字
  • 名,姓
  • 名,姓,中名

当做查询做WHERE事情的顺序?

例:

WHERE FIRST_NAME = '克里斯' 和姓氏= '史密斯'

VS

WHERE姓氏= '史密斯' 和FIRST_NAME = '克里斯'

这些是基本一样?

回答

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

+0

[给出一个SELECT,什么是最佳INDEX?](http://mysql.rjweb.org/doc.php/index_cookbook_mysql) – 2015-04-05 22:46:35

+0

没有银弹,每个月都需要分开分析。 – matino 2015-04-06 11:23:49