mysql的innodb引擎本身存儲的形式就必須是聚簇索引的形式 , 在磁碟上樹狀存儲的 , 但是不一定是根據主鍵聚簇的 , 有三種情形: 1. 有主鍵的情況下 , 主鍵就是聚簇索引 2. 沒有主鍵的情況下 , 第一個非空null的唯一索引就是聚簇索引 3. 如果上面都沒有 , 那麼就是有一個隱藏的 ...
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 | | +----+-------------+-------+-------+---------------+---------+---------+-------+------+-------+