mysql索引最左匹配原則的理解

2021-10-11 04:13:34 字數 842 閱讀 1159

這裡需要提醒的是:mysql的執行計畫和查詢的實際執行過程並不完全吻合。如何證明這一點呢?

真正的執行過程可以通過mysql的trace工具來分析。

1,針對執行2

explain select * from student where   cid=1;
這裡只顯示trace結果的一部分內容:

] /* considered_access_paths */

} /* best_access_path */,

"cost_for_plan": 1.2,

"rows_for_plan": 1,

"chosen": true

}] /* considered_execution_plans */

},

可以看到並沒有使用索引,而是進行了全表掃瞄。

2,下面再來看一下執行1的trace:

,

,] /* considered_access_paths */

} /* best_access_path */,

"cost_for_plan": 1.2,

"rows_for_plan": 1,

"chosen": true

}] /* considered_execution_plans */

},

可以看出最終使用的索引是name_cid_inx。

王珊《資料庫系統概論》(第5版)網授精講班【教材精講+考研真題串講】

3,where中and條件的先後順序對如何選擇索引是無關的。因為優化器會去分析判斷選用哪個索引。

MySQL索引 最左匹配原則

表結構,有三個字段,分別是id,name,cid create table student id int 11 not null auto increment,name varchar 255 default null,cid int 11 default null,primary key id k...

mysql取締最左匹配原則 最左匹配原則

一 這條sql語句select from dept where age 12 and name like a 雖然age條件在前,name在後,看似不滿足最左側原則,但這條語句在執行的過程中mysql優化器會將該條語句優化為select from dept where name like a and...

Mysql 聯合索引最左匹配原則

二 測試現象 drop table if exists test table create table test table id int 11 not null auto increment comment 編號 namee varchar 255 default null comment 姓名 ...