MysqL的innodb引擎本身存儲的形式就必須是聚簇索引的形式,在磁盤上樹狀存儲的,但是不一定是根據主鍵聚簇的,有三種情形:
1. 有主鍵的情況下,主鍵就是聚簇索引
2. 沒有主鍵的情況下,第一個非空null的唯一索引就是聚簇索引
3. 如果上面都沒有,那么就是有一個隱藏的row-id作為聚簇索引
大部分情況下,我們建表的時候都會創建主鍵,因此大部分都是根據主鍵聚簇的
當我們根據主鍵字段來進行查詢時,效率是最高的,不需要二次查找,直接主鍵字段查詢索引樹,葉子節點就是存儲的數據了
當我們根據主鍵查詢時,如果就只有唯一一條,那么執行計劃是下面這樣的,差不多是最高效的 . type是const? row只需要掃描一行
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------+
| 1 | SIMPLE | tblz | const | PRIMARY | PRIMARY | 4 | const | 1 | |
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------+
總結
如果覺得編程之家網站內容還不錯,歡迎將編程之家網站推薦給程序員好友。
本圖文內容來源于網友網絡收集整理提供,作為學習參考使用,版權屬于原作者。
如您喜歡交流學習經驗,點擊鏈接加入交流1群:1065694478(已滿)交流2群:163560250