mysql 单列索引 和 多列缩影

来源:互联网 发布:pokemon狙击软件 编辑:程序博客网 时间:2024/05/17 23:24

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 )  即创建联合索引时 最左边的 列 出现即可

缺点 联合索引不同于 单列索引 会残生大量的索引 文件  (并是不按单列索引 相加得到   在存放文件的 大小 应该是 按照相乘计算  带验证)      并且在添加 删除和 修改数据时 也会降低 效率

0 0