二、測試現象
drop table if exists `test_table`;
create table `test_table` (
`id` int(11) not null auto_increment comment '編號',
`namee` varchar(255) default null comment '姓名',
`***` varchar(255) default null comment '性別',
`age` int(11) default null comment '年齡',
`bitthday` varchar(255) default null comment '生日',
`aihao` varchar(255) default null comment '愛好',
`xuehao` varchar(255) default null comment '學號',
`mingci` int(11) default null comment '名詞',
primary key (`id`),
key `lianhe` (`namee`,`xuehao`,`mingci`)
) engine=innodb auto_increment=5002 default charset=utf8;
drop procedure test_insert;
delimiter ;;
create procedure test_insert ()
begin
declare
i int default 0 ;
while i < 5000 do
insert into test_table (
namee,
***,
age,
bitthday,
aihao,
xuehao,
mingci
) values
( concat('test', i),
'男',
圖中可以看到,聯合索引lianhe的字段順序是 namee,xuehao,mingci,現使用這個順檢視索引使用情況如下:
通過觀察,發現用到了索引 lianhe。
跳過最左邊欄位也就是不適用第乙個欄位namee時測試結果如下:
圖中可以發現,type = all 並沒有使用索引。
這裡就是聯合索引的最左匹配原則。
mysql 索引最左匹配原則參考
簡述MySQL聯合索引最左匹配原則
在網上看過一些有關最左匹配原則的部落格,自以為自己理解了,但是今天面試的時候被面試官深挖了一下,就暴露了其實並沒有真正理解到最左匹配原則。mysql在建立聯合索引的時候,會從左到右依次建立遞增的索引。而且也比較推薦建立聯合索引,因為乙個索引可以起到很多個索引的作用。create table inde...
mysql 最左匹配 聯合索引
mysql建立多列索引 聯合索引 有最左字首的原則,即最左優先,如 如果有乙個2列的索引 col1,col2 則已經對 col1 col1,col2 上建立了索引 如果有乙個3列索引 col1,col2,col3 則已經對 col1 col1,col2 col1,col2,col3 上建立了索引 總...
mysql 最左匹配 聯合索引
mysql建立多列索引 聯合索引 有最左字首的原則,即最左優先,如 如果有乙個2列的索引 col1,col2 則已經對 col1 col1,col2 上建立了索引 如果有乙個3列索引 col1,col2,col3 則已經對 col1 col1,col2 col1,col2,col3 上建立了索引 總...