永刚的点滴成长

导航

 

优化思路:

  1、优化更需要优化的SQL:优先优化低消耗高并发的SQL,因为低消耗高并发远比高消耗低并发影响要大。

  2、定位优化对象的性能瓶颈:IO,CPU,网络带宽。

  3、明确优化的目标:以良好的户体验为目的。

  4、从explain执行计划入手。

  5、小结果集驱动大结果集。

  6、尽可能在索引当中完成排序,

    6.1、order by 子句中只要是索引的前导列都可以都可以使索引生效,可以直接在索引中排序,不需要额外的内存或文件排序。

    6.2、不能利用索引避免额外排序的情况:例如排序字段有多个索引,排序顺序和索引键顺序不一致(非前导列)。

  7、不要使用select *

  8、仅使用最有效的过滤条件。

  9、尽可能避免复杂的join和子查询。

  10、小心使用order by group by distinct。

  11、合理设计并利用索引。

那些情况可能会导致全表扫描:

  1、没有合适的索引

  2、条件列上使用了运算符

  3、使用函数(显示转换)

  4、条件列上发生了隐式转换

  5、条件所对应的列不在组合索引的第一位

  6、条件列上使用了is Null或is not Null

  7、使用了左模糊查询或双边模糊查询

  8、使用不等关联

  9、条件列对应的索引选择度不高

  10、表很小

  11、使用并行

  12、使用HINT提示全表扫描

  13、or使用不当

  14、取得数据量占比比较大

  15、索引碎片太严重

如何建立索引

  1、单列索引(选择性)

  2、组合索引(将最常用的列作为前导列,唯一性多,范围查询的字段尽量放在前面,组合索引字段不宜过多,不要使索引冗余,尽可能少的建立索引,更多的被使用,组合索引下where后面的条件先后不影响。

  3、外键一定要建立索引

  4、如果对某列有函数操作可以考虑建立函数索引

  5、nvarchar2和varchar2隐式转换,走全表扫描,但问题比较难发现。

posted on 2019-06-28 15:10  永刚的点滴成长  阅读(262)  评论(0编辑  收藏  举报