2015-04-04 67 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