MySQL 多列索引
2017-07-30 本文已影响0人
mashen
MySQL 多列索引
多列索引也叫联合索引又叫复合索引
也就是把多个字段按顺序连起来创建一个索引 ( 最多16列 )
理解这句:按顺序的连起来 从左到右的
为什么要创建多列索引?
相对在每个列上单独建索引 多列索引占用空间更小 检索也就越快
比如表里有3个字段 name,age,from
name | age | from |
---|---|---|
mashen | 1991 | Dalian |
-- 创建多列索引
alter table x_test add index(name,age,from);
创建的索引就相当于是 : mashen1991Dalian
当查询时从左到右去比对查询
示例:
// 完全使用索引
WHERE name = 'name' AND age = 'age' AND from = 'from';
// 完全使用索引 ( mysql会自动排序 )
WHERE age = 'age' AND name = 'name' AND from = 'from';
// 使用索引 ( 因为是遵循前缀索引的原则 所以下面两个查询都使用了索引 )
WHERE name = 'name';
WHERE name = 'name' AND age = 'age';
// 没有使用索引 ( 因为缺少age字段 无法现实从左到有匹配 )
WHERE age = 'age';
WHERE age = 'age' AND from = 'from';
// 部分索引 ( name最左使用了索引 from未使用索引 因为中间断开了age )
WHERE name = 'name' AND from = 'from';