查看: 104|回复: 0

mysql(5.7)-索引的最佳实践

[复制链接]

6

主题

11

帖子

22

积分

新手上路

Rank: 1

积分
22
发表于 2022-12-5 10:34:20 | 显示全部楼层 |阅读模式
全值匹配
最左前缀法则:如果索引了多列,要遵循最左前缀法则。查询从最左侧开始并且不跳过索引中的列
不在索引列上做任何操作(计算、函数、自动or手动类型转换)、会导致索引失效而导致全表扫描
存储引擎不能使用索引中范围右面的列。a = 1 and b>2 and c=3,c失效
尽量使用覆盖索引,减少select *
mysql在使用不等于的时候会使索引失效,导致全表扫描
is null、is not null也无法使用索引
like以通配符开头会导致全表扫描
字符串不加单引号索引失效
少用or或in,可能导致索引失效,这个需要看mysql的优化方案

优化
mysql支持两种排序filesort和index。using index是指扫描索引本身完成排序,index效率高
order by使用index的情况,使用索引最左前列,使用where语句和order by语句组合满足索引最左前列
尽量在索引列上完成排序,遵循索引建立时的最左前缀法则
如果order by条件不在索引列上,就会产生using filesort
能用覆盖索引尽量用覆盖索引
group by和order by很类似,其实质是先排序后分组,遵照索引创建的最左前缀原则
where高于having,能写在where的不要写在having
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表