SQL优化
在SQL优化的过程中可以从下面的方式去考虑
1.执行计划层面
1.根据执行计划判断是否需要优化,常见的需要优化的是全表扫描,逻辑读高等
2.执行计划是否符合预期,如果不符合预期,可以考虑从数据量,数据分布是否合理,统计信息是否过期等方面分析
3.是否可能存在高水位的问题
2.SQL层面
从SQL层面分析SQL是否存在优化点。如:
1.一个复杂的SQL语句中同时存在多个相同的子SQL,可以使用with as 改写
2.标量子查询,可以改写成外连接
3.去除SQL中非必要的字段,尽可能的减少回表带来的消耗
3.索引层面
1.一个表中索引的个数是否太多,是否可以进行索引合并
2.索引字段是否合理,常见的B+树索引适合数据重复度不高的字段,重复度较高的可以考虑使用位图索引。
3.在复合索引中,要结合常用的SQL考虑字段的顺序等问题。