zoukankan      html  css  js  c++  java
  • 常用sql调优《一》

    1. 使用索引,避免在索引列上使用计算.

    2.用>=替代> <=替代<

    3.用UNION替换OR (适用于索引列)

    4.用IN来替换OR 或者 用EXISTS替代IN

    5 用WHERE替代ORDER BY .ORDER BY 子句只在两种严格的条件下使用索引.
    ORDER BY中所有的列必须包含在相同的索引中并保持在索引中的排列顺序. ORDER BY中所有的列必须定义为非空.

    6.注意WHERE子句中的连接顺序. ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾.

    7. SELECT子句中避免使用 ‘ * ‘

    8.使用DECODE函数可以避免重复扫描相同记录或重复连接相同的表.

    9. 慎用游标。游标是把结果集放在服务器内存,并通过循环一条一条处理记录,对数据库资源(特别是内存和锁资源)的消耗是非常大。尽量使用显式的游标(CURSORs) 。使用隐式的游标,将会执行两次操作.

    10.使用较大的BUFFER(比如10MB , 10,240,000)可以提高EXPORT和IMPORT的速度

    11.使用表的别名(Alias) 当在SQL语句中连接多个表时, 请使用表的别名并把别名前缀于每个Column上.这样一来,就可以减少解析的时间并减少那些由Column歧义引起的语法错误.

    12.通过内部函数提高SQL效率.

    13.减少对表的查询  尤其是在含有子查询的SQL语句中,要特别注意减少对表的查询

    14.只要有可能,在程序中尽量多使用COMMIT, 这样程序的性能得到提高,需求也会因为COMMIT所释放的资源而减少:

    15.删除表数据时用TRUNCATE替代DELETE,可以释放物理空间

    16.最高效的删除重复记录方法 ( 因为使用了ROWID)
    DELETE FROM EMP E
    WHERE E.ROWID >; (SELECT MIN(X.ROWID) 
                       FROM EMP X
                       WHERE X.EMP_NO = E.EMP_NO);

    17. 避免使用大字段

    18.count(*) 比count(1)稍快 , 当然如果可以通过索引检索,对索引列的计数仍旧是最快的.19.用Where子句替换HAVING子句 避免使用HAVING子句, HAVING 只会在检索出所有记录之后才对结果集进行过滤

    19. 避免使用like '*' ,避免使用 is null  或者是

    20.

    注:

    A、程序员注意、关心各表的数据量。

    B、 编码过程和单元测试过程尽量用数据量较大的数据库测试,最好能用实际数据测试。

    C、 每个SQL语句尽量简单

    D、不要频繁更新有触发器的表的数据

    E、 注意数据库函数的限制以及其性能

    F、使用TKPROF 工具来查询SQL性能状态

    G、用EXPLAIN PLAN 分析SQL语句

  • 相关阅读:
    一个配置引发的血案
    软件工程之学习方法篇
    开篇
    重拾《 两周自制脚本语言 》- 中文关键字与原生函数
    重拾《 两周自制脚本语言 》- 支持中文标识符
    将《 两周自制脚本语言 》测试中使用的接口中文化
    5分钟入门LingaScript-尝鲜中文版TypeScript
    为《 两周自制脚本语言 》添加中文测试代码
    2019-02-18 扩展Python控制台实现中文反馈信息之二-正则替换
    2019-02-14 1992年日本对母语编程的可读性比较实验
  • 原文地址:https://www.cnblogs.com/qishiguilai/p/4250786.html
Copyright © 2011-2022 走看看