zoukankan      html  css  js  c++  java
  • SQL性能优化总结

    1. 没有适用一切的定律;
    2. 分析方法:执行计划、IO信息和时间信息
    3. 索引:

      覆盖非聚簇索引》聚簇索引》非覆盖非聚簇索引》表扫描
    4. 连接方法:Nested lookup, Merge join, Hash Join
    5. scan vs seek:如何化scan为seek
    6. select into vs insert select
    7. 控制执行顺序:拆分,括号,hint
    8. 原则:最先应用最有效的过滤/连接

    9. 具体问题:化scan为seek,错误的估值,错误的连接算法,Timeday

    最佳实践:

    1. 使用面向集合的编程;

      尽量避免使用游标;

    2. 为优化器提供统计信息;

      尽可能开启所有数据库的AUTO_UPDATE_STATISTICS选项;

    3. 避免不必要的复杂;

      优化器对连接的处理比对多层的group by子句或子查询的处理要好的多;

      对于聚集、标量表达式、UDF、和多重语句TVF,优化器不能轻松估计有效行的数量和数据分布情况;

      如果查询会使用标量表达式过滤结果,请为标量表达式创建计算列;

      如果可能,把复杂查询或结构作为查询的最后一步。计划前期的估计错误将会影响后续操作的选择;

      将复杂查询拆分成多步查询,在临时表中存储中间结果;

    当我们set statistics time on之后,我们应该关注的指标是什么,是CPU time,还是elapsed time?

  • 相关阅读:
    Java数据库小项目02--管家婆项目
    Java数据库小项目01--实现用户登录注册
    Java数据库小项目00---基础知识
    MySQL基础练习02---牛客网
    ICMP
    语法糖
    双绞线
    telnet 时代的 bbs
    ARPA
    IEEE802是一个局域网标准系列
  • 原文地址:https://www.cnblogs.com/end/p/1814961.html
Copyright © 2011-2022 走看看