索引知识点:
1.离散度
2.mysql优化器:当离散度很低,查询全表与通过索引查询时间差不多,则不会通过索引查询
2.联合索引最左匹配:
alter table xx add index ‘aa’(‘name’,‘phone’)
检索时,会先根据name进行索引,找到下层,在通过phone查找
如果查询语句中没有name,则用不到索引
3.explain select * from xx where name='aa' and phone ='11111xx'
explain中显示rows,代表查找的行数
3.联合索引:比如创建了index(a,b,c),相当于创建index(a),index(a,b),index(a,b,c)
当通过b,c查询时,用不到索引
4.覆盖索引:查询的数据在索引中存在时,不需要去数据库中查询,大大提高了消息,explain 中extra=from index
比如:index('name','phone')
select name,phone from xx where name='xx'
注意点:
当查询类型为字符类型,用一个数字去查询,会发生一个类型的隐士转换,导致用不到索引
索引优化手段:
1.选择的索引列的长度不应该过长
2.where条件中not in和<>都无法使用索引
3.模糊匹配like abc%能用到索引--最左匹配,like%2673%用不到索引
4.尽量不要使用select *,写明具体查询字段
5.索引列不要参与计算:索引列参与计算,会导致索引失效
网友评论