MySQL資料庫索引的最左匹配原則

2022-09-21 01:00:08 字數 581 閱讀 4630

目錄

建立三個欄位的聯合索引

聯合索引(a,b,c)相當於建立了索引:(a),(a,b),(a,b,c)

先給出結論:a可以命中聯合索引(a,b,c),c無法命中,所以ac組合無法命中聯合索引。

1.建立abc聯合索引(provincwww.cppcns.come,city,district)

ac索引查詢

select * from user_address where province = '廣東'

and district = '南雄市'

顯示查詢範圍是all

2.直接建立ac兩個欄位得聯合索引

select * from user_address whertdzzhrtwpme province = '廣東'

and district = '南雄市'

查詢結果是ref走了索引,掃瞄的行數也從21行變成了13行

3.ab索引查詢

查詢範圍為ref

結論abc聯合索引,ac中的c不能命中這三個欄位的聯合索引,a可以命中,所以possible_keys列會顯示使用了聯合索引

abc索引,acb會走索引嗎?

mysql 最左匹配 聯合索引

mysql建立多列索引 聯合索引 有最左字首的原則,即最左優先,如 如果有乙個2列的索引 col1,col2 則已經對 col1 col1,col2 上建立了索引 如果有乙個3列索引 col1,col2,col3 則已經對 col1 col1,col2 col1,col2,col3 上建立了索引 總...

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 最左匹配 聯合索引

mysql建立多列索引 聯合索引 有最左字首的原則,即最左優先,如 如果有乙個2列的索引 col1,col2 則已經對 col1 col1,col2 上建立了索引 如果有乙個3列索引 col1,col2,col3 則已經對 col1 col1,col2 col1,col2,col3 上建立了索引 總...