MySQL之索引復合索引有效性

2022-08-10 09:18:13 字數 1759 閱讀 1507

首先這裡建立一張資料表,並建立符合索引( index_a,index_b,index_c)

create table `test_index_sequence` ( 

`id` int(11) not null auto_increment, 

`index_a` varchar(255) default null, 

`index_b` varchar(255) default null, 

`index_c` varchar(255) default null, 

`field_d` varchar(255) default null, 

primary key (`id`), 

key `complex_index` (`index_a`,`index_b`,`index_c`) 

) engine=innodb auto_increment=1 default charset=utf8; 

資料插入完成後,下面開始逐步驗證索引的有效性。

1、單獨使用欄位index_a:

explain 

select * 

from test_index_sequence 

where index_a='a' 

通過explain分索引有效;

2、單獨使用欄位index_b:

explain 

select * 

from test_index_sequence 

where index_b='b' 

通過索引失效;

3、單獨使用欄位index_c:

explain 

select * 

from 

test_index_sequence 

where index_c='c' 

檢視分析結果,索引失效;

4、聯合使用欄位index_a,index_b:explain 

select * 

from test_index_sequence 

where index_a='a' and index_b='b'

檢視分析結果,索引有效; 

5、聯合使用欄位index_a,index_c:explain 

select * 

from test_index_sequence 

where index_a='a' and index_c='c'

檢視分析結果,索引有效; 

6、聯合使用欄位index_b,index_c:

explain 

select * 

from test_index_sequence 

where index_b='b' and index_c='c'

檢視分析結果,索引失效;

7、聯合使用欄位index_a,index_b,index_c:

explain 

select * 

from test_index_sequence 

where index_a='a' and index_b='b' and index_c='c' 

檢視分析結果,索引有效;

綜述:mysql的復合索引遵循了最左字首原則,當建立索引(index_a,index_b,index_c)時:

使用索引有效的字段為:'index_a』,'index_a,index_b』,'index_a,index_b,index_c』;

使用索引失效的字段為:'index_b』,'index_c』,'index_c,index_b』;

mysql 復合索引

聯合索引又叫復合索引。對於復合索引 mysql從左到右的使用索引中的字段,乙個查詢可以只使用索引中的一部份,但只能是最左側部分。例如索引是key index a,b,c 可以支援a a,b a,b,c 3種組合進行查詢,但不支援 b,c進行查詢 當最左側欄位是常量引用時,索引就十分有效。兩個或更多個...

mysql復合索引原理 MySQL 聯合索引詳解

mysql 聯合索引詳解 聯合索引又叫復合索引。對於復合索引 mysql從左到右的使用索引中的字段,乙個查詢可以只使用索引中的一部份,但只能是最左側部分。例如索引是key index a,b,c 可以支援a a,b a,b,c 3種組合進行查詢,但不支援 b,c進行查詢 當最左側欄位是常量引用時,索...

mysql復合索引 普通索引總結

mysql復合索引 普通索引總結 對於復合索引 mysql從左到右的使用索引中的字段,乙個查詢可以只使用索引中的一部份,但只能是最左側部分。例如索引是key index a,b,c 可以支援a a,b a,b,c 3種組合進行查詢,但不支援 b,c進行查詢 當最左側欄位是常量引用時,索引就十分有效。...