常用SQL优化技巧
数据库,SQL
SQL执行步骤
SELECT select_list FROM table_source1, table_source2 WHERE condition GROUP BY colum HAVING condition ORDER BY colum DESC
执行以table_source数据构成工作表,WHERE和后续关键字条件依次作用于工作表,筛选查询结果,最后ORDER BY 对最终结果进行排序。
什么是SQL优化
SQL优化是在保证SQL处理结果正确的前提下,利用优化器可识别的语句,充分利用索引,减少访问的数据块,减少表扫描I/O,减少无效的开销,达到加快处理速度的目的。
常用优化方式
-
WHERE 条件顺序要求:WHERE条件过滤顺序,从后向前,表连接写在最前,可以过滤大量数据的条件在最后,逐层减少扫描的数据量。
- WHERE条件不要在索引字段上进行运算,对索引字段进行运算后,索引将不再起作用。
-
尽量使用
>=
替代>
,尽量不要使用<>
,!=
运算,可以直接使用索引减少数据量,而对索引使用!=
运算,索引将失效。 -
显示或隐式的使用了运算的字段不会使用索引,应尽量减少。
-
多表连接查询时,为没个表设置别名,并作为查询字段的前缀,减少解析时间。
-
尽量减少使用in,而使用exists代替,使用exists时,主表记录作为外层循环,子查询为内层循环,当外层数据较少时,使用exists更快,反之则可以使用in
-
尽量使用not exists 或外连接替代not in,not in 不能使用索引
-
使用union all 替代union ,union 增加了处理重复数据的步骤。
-
减少SQL语句解析时间,尽量使用相同的语句格式,关键字大小写,减少同一个SQL被重复解析的次数。