在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  數(shù)據(jù)庫(kù)/ Mysql 組合索引最左原則的疑惑

Mysql 組合索引最左原則的疑惑

如果test表有一個(gè)組合索引(a,b),執(zhí)行如下兩條語(yǔ)句。
explain select * from test where a=1 and b=1;
explain select * from test where b=1 and a=1;
執(zhí)行結(jié)果顯示這兩條語(yǔ)句都用索引。根據(jù)最左原則,只有第一條使用索引,第二條不使用索引。不明白為什么,求解惑

回答
編輯回答
敢試

最左原則是指:mysql會(huì)一直向右匹配直到遇到范圍查詢(>、<、between、like)就停止匹配,索引可以任意順序,mysql的查詢優(yōu)化器會(huì)幫你優(yōu)化成索引可以識(shí)別的形式,所以這兩條都是會(huì)命中索引的

2018年4月3日 05:32
編輯回答
薄荷綠

題主列出的情況,mysql會(huì)優(yōu)化where子句的條件順序,讓查詢符合索引順序。

更具體點(diǎn),上面的sql屬于交集查詢(都是and),在mysql中會(huì)使用Index Merge intersection algorithm算法來調(diào)整條件子句順序。更詳細(xì)的解釋參見官方文檔。

2018年2月10日 14:49