mysql聯合索引abc

2021-10-23 13:31:26 字數 2099 閱讀 1307

建立測試表:

set names utf8mb4;

set foreign_key_checks = 0;

create table `test`  (

`id` int(11) not null auto_increment,

`a` int(11) not null default 1,

`b` int(11) not null default 1,

`c` int(11) not null default 1,

`d` int(11) not null default 1,

primary key (`id`) using btree

) engine = innodb auto_increment = 1 character set = utf8mb4 collate = utf8mb4_general_ci row_format = compact;

set foreign_key_checks = 1;

alter table test add index sindex(a,b,c);

批量插入100w條資料做測試,漫長的等待過程,超時 set_time_limit(0);

$n = 1000000;

for ($i = 0; $i <= $n; $i++)

測試索引命中、為了更清晰直觀體現索引命中率、我把結果都截圖到每條語句的下方導致篇幅過長;

結論:1.and and 只要用到了最左側a都會使用到索引

2.a and b or c 不會使用索引

3.最左側a列被大於、小於、不等於比較的、不使用索引

4.b列 c列使用大於、小於、不等於比較的 會使用索引

5. order  by a desc group by a 只要保持最左側a原則 都會使用索引;

透徹理解聯合索引 a,b,c

目錄 用到索引的有a,ab,abc,ac 因為優化器會自動調整and前後的順序,所以ba,cba,bca,ca都會用到索引,其他的都不會用到該索引。ac這一組僅僅是a用到索引。組合索引 有 最左字首 原則,遇到範圍查詢 聯合索引是一顆b 樹 a,b 情況描述 在mysql的user表中,對a,b,c...

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進行查詢 當最左側欄位是常量引用時,索引就十分有效。兩個或更多個...