復合主鍵在where中使用查詢的時候到底走不走索引呢?例如下表:
create table index_test ( a int not null, b int not null, c int not null, d int null, primary key (a, b, c) );
當執行以下SQL的時候到底走不走索引呢?
-
SELECT * FROM index_test WHERE a = 1;
-
SELECT * FROM index_test WHERE a = 1 AND b = 1;
-
SELECT * FROM index_test WHERE a = 1 AND b = 1 AND c = 1;
-
SELECT * FROM index_test WHERE b = 1;
-
SELECT * FROM index_test WHERE b = 1 AND c = 1;
-
SELECT * FROM index_test WHERE a = 1 AND c = 1;
Explain結果:
- 使用索引

- 使用索引

- 使用索引

- 不使用索引

- 不使用索引

- 使用索引

結論:Mysql復合主鍵的順序十分重要,WHERE查詢條件中會按列匹配復合主鍵,匹配上則使用索引直到匹配不上為止,例如上表,WHERE條件中有a則使用a的索引,有a,b則使用a,b的索引;如果沒有a,只有b或c,則不走索引;有a,中間無b,有c則只使用a的索引,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/551255.html
標籤:其他
下一篇:返回列表
