mysql 索引學習–多條件等值查詢,順序不同也能應用聯合索引啦

以前學習這一塊的時候,是說:假設建立了聯合索引a+b,那麼查詢語句也一定要是這個順序才能應用該索引。

那麼實際是怎樣呢,經過mysql這麼多次版本升級,相信mysql已經給我們做了某些優化。

下面是我的實測結果:(5.7版本)

step1:反順序也是可以應用索引的。

step2:正常順序更加沒問題

step3:在有單列索引情況下,竟然優先使用了聯合索引

 step4:將idx_name_del中的索引順序換了下,把name換前面。

step5:將idx_pid_del中的索引順序換了下,把pid換前面。這下優化器顯示:使用單列索引。

總結:

結論1:在有聯合索引時,順序已不再要緊,mysql內部已經做了優化,只要是聯合索引的那幾個條件與where子句中的條件匹配,都能應用對應的聯合索引。

結論2:在有聯合索引(a+b)和單列索引a同時存在時,通過a條件的查詢會優先使用聯合索引。

結論3:在有聯合索引(b+a)和單列索引a同時存在時,通過a條件的查詢會使用單列索引,聯合查詢不會出現在possible keys中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章