目录
2. 将 JSON_UNQUOTE() 替换为 ->> 符号
前言:
目前,无论是运维,开发,测试,几乎都有接触到SQL,会使用SQL,会优化SQL,还是一项很重要的技能,多一份技能,就多一份责任,工作报告也多一项描述,薪资也会慢慢往上涨,美滋滋!!!
一、SQL语句优化
(一)SQL关键字执行顺序
想要优化SQL语句,先熟悉每个关键字执行的顺序;我们可以根据顺序选择性的得到多种方案优化
执行顺序:
-
FROM子句
-
ON子句
-
JOIN子句
-
WHERE子句
-
GROUP BY子句
-
HAVING子句
-
SELECT子句
-
DISTINCT子句
-
ORDER BY子句
-
LIMIT子句或者TOP子句
(二)避免索引失效
索引失效会带来一些可能存在的隐患:
1. 索引失效行锁会上升至表锁,其他需要访问该表需要等待释放,并发性会降低,可能还会发生死锁的情况
2. 查询性能下降,索引失效必定会全表扫描,增加查询时间
使用索引时,要注意避免索引失效:
1. 复合索引:
1)必须遵循最左缀原则是用,否则会导致索引失效
2)比如索引(a,b,c) 查询顺序 则是--》where a=1 and b=2 and c=3
3) 不要跨列或无序使用(最佳左前缀);
4) 尽量使用全索引匹配,也就是说,你建立几个索引,就使用几个索引
5)使用范围条件(如> < between like)之后自身和右侧的索引字段会消失
2. 不要在索引上进行任何操作(计算、函数、类型转换、操作符),否则索引失效
1) 优化可以使用 between 等操作
3. 索引不能使用不等于(!= <>)或is null (is not null),否则自身以及右侧所有全部失效(针对大多数情况)
复合索引中如果有>,则自身和右侧索引全部失效。
4. 模糊查询:like不要以’%'开头,否则索引失效; 但是可以优化使用"x