SQL执行顺序,优化的禁止项,建议项

发布时间 2023-10-18 15:41:28作者: 大树2

SQL执行顺序,优化的禁止项建议项

SQL执行顺序如下:
1 .FROM,(-including JOIN )
2. WHERE
3. GROUP BY
4. HAVING
5. WINDOW functions
6. SELECT
7. DISTINCT
8. UNION
9. ORDER BY
10. LIMIT and OFFSET
·语句性能应注意两个方面:
1)数据流的流向;
2)order by limit场景。
从执行顺序上看,在SELECT之前的所有子语都是在做数据筛选,SELECT以后开始执行运算,用户应注意数据流的流
向。order by limit一般是在最后运行,如果在一开始运行,有时候会造成返回数据量过大,进而导致执行时间过长。

SQL的语句编写包含一些禁止项与建议项语句,用户深入了解与熟练掌握这些内容能够更好地开展业务。
1.禁止项
1)select *,返回无用数据,过多IO消耗,以及Schema 变更问题;
2)Insert语句指定具体字段名称,不要写成insert into t1 values(…),道理同上;
3)禁止不带WHERE,导致全表扫描以及误操作;
4)Where条件里等号左右字段类型必须一致,否则可能 会产生隐式转换,无法利用索引;
5)索引列不要使用函数或表达式,否则无法利用索引。
如where length(name)=‘Admin’或where user_id+2=5;
6)Replace into,会导致主备不一致;
7)业务语句中带有DDL操作,特别是Truncate。
2.建议项
1)减小三表以上Join;
2)用Union all 替代Union;
3)使用Join 替代子查询;
4)不要使用 like ‘%abc%’,可以使用 like ‘abc%’;
5)Order by /distinct /group by 都可以利用索引有序性;
6)减少使用event/存储过程,通过业务逻辑实现;
7)减小where in() 条件数据量;
8)减少过于复杂的查询和拼串写法。
禁止Null值
定义 id int primary key
统一字符集,建议UTF8mb4
统一排序规则