A 经常使用 多个条件共同作为筛选条件的 索引选择
如从user 表中检索出 姓名为'张'年龄为20 性别为男 的 用户. 可以有一下几种思路,
1.姓名 年龄,性别 其中一个 创建 索引 , mysql 通过索引 快速定位到符合 其中 一个条件的 数据 在 进行 筛选.
2创建 联合(多列)索引 mysql 通过索引 定位到 符合 符合 其3个条件的 数据 并返回.
3 为这3个字段分别创建单列索引. 但是 mysql 并不会 用过 这3个索引 去 定位 数据 , 只会 从 其中 一个索引中选择 一个 mysql 认为最合适的 索引 进行检索 .
ALTER TABLE tabname ADD INDEX indexname (name,age,sex);
////
综上所言
为经常要 一起作为 筛选条件的数据 创建联合索引 是 最合适的 方法
B 联合(多列)索引 的优缺点
优点 联合索引 作为范围广 ,为 name,age,sex 创建联合索引相当于 为这3个列分别创建索引 . 其可以利用到索引的情况 可以有多种 , 但是 遵行 最左规则 ,如创建索引是 index indexname(name,age,sex) 按照 这个顺序 存放时, 以下 筛选t条件 可以使用 此联合索引 (id,name,age) ,(id,name) ,(id) 和(id,sex ) 即创建联合索引时 最左边的 列 出现即可
缺点 联合索引不同于 单列索引 会残生大量的索引 文件 (并是不按单列索引 相加得到 在存放文件的 大小 应该是 按照相乘计算 带验证) 并且在添加 删除和 修改数据时 也会降低 效率