寫在前面,本文都是我親自測試的結果,我根據結果進行的總結,對於原理不甚瞭解,請你們參考,也但願懂的朋友在下面評論,告訴我緣由。mysql
索引狀態:此時type有索引sql
sql: explain extended select * from y_user where type >0;
結果:mysql優化
可是,當我修改查詢條件,測試
explain extended select * from y_user where type >1;
結果:優化
能夠看到,使用了type索引。spa
索引狀態:此時type有索引,nation未加索引code
sql: explain extended select * from y_user where type >0 and nation>0;
結果: 未使用任何索引索引
固然,修改條件,仍是會使用索引type的ip
索引狀態:此時type有索引,nation有索引,同第2條。此外,修改查詢條件,兩個索引都有效時,選擇過濾更多結果的索引。it
此外,組合索引有一個最左前綴原則,也就是說若是組合索引爲 a_b_c,那麼查詢時的只要出現了a或者a,b,或者abc均可以使用改組合索引。可是,不能沒有a查詢條件,也就是說最左前綴的意思是查詢條件必定要包含
組合索引最左邊的元素,而不是說查詢條件必須按照組合索引的組合順序進行查找。