文章詳情頁
Mysql 組合索引最左原則的疑惑
瀏覽:107日期:2022-06-15 17:53:39
問題描述
如果test表有一個組合索引(a,b),執行如下兩條語句。explain select * from test where a=1 and b=1;explain select * from test where b=1 and a=1;執行結果顯示這兩條語句都用索引。根據最左原則,只有第一條使用索引,第二條不使用索引。不明白為什么,求解惑
問題解答
回答1:題主列出的情況,mysql會優化where子句的條件順序,讓查詢符合索引順序。
更具體點,上面的sql屬于交集查詢(都是and),在mysql中會使用Index Merge intersection algorithm算法來調整條件子句順序。更詳細的解釋參見官方文檔。
相關文章:
1. html5 - css3scale和rotate同時使用轉換成matrix寫法該如何轉換?2. win10 python3.5 matplotlib使用報錯3. php多任務倒計時求助4. css - 如何把一個視圖放在左浮動定位的視圖的上面?5. javascript - jquery怎么讓a標簽跳轉后保持tab的樣式6. MySQL的聯合查詢[union]有什么實際的用處7. javascript - 小demo:請教怎么做出類似于水滴不斷擴張的效果?8. javascript - vue組件的重復調用9. python的正則怎么同時匹配兩個不同結果?10. javascript - axios請求回來的數據組件無法進行綁定渲染
排行榜
