文章詳情頁
Mysql 組合索引最左原則的疑惑
瀏覽:100日期: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. 如何分別在Windows下用Winform項模板+C#,在MacOSX下用Cocos Application項目模板+Objective-C實現一個制作游戲的空的黑窗口?2. javascript - 最終生成的jsBundle文件壓縮問題3. 關于docker下的nginx壓力測試4. 關于Java引用傳遞的一個困惑?5. android clickablespan獲取選中內容6. python - TypeError: tryMsgcode() takes exactly 2 arguments (0 given)7. docker安裝后出現Cannot connect to the Docker daemon.8. android - 啟動模擬器的,報“Could not automatically detect an ADB binary……”,要怎么解決?9. angular.js - angularjs的自定義過濾器如何給文字加顏色?10. javascript - 關于json中獲取多個key-value對中多層嵌套key的name
排行榜
