zoukankan      html  css  js  c++  java
  • oracle+SQL优化实例

    1.     减少I/O操作:

    SELECT COUNT(CASE WHEN empno>20 THEN 1 END) c1,COUNT(CASE WHEN empno<20 THEN 1 END) c2
    FROM emp;
    2. 通过rowid访问

    SELECT ROWID,emp.* FROM emp
    WHERE ROWID=chartorowid('AAAHW7AABAAAMUiAAA')

    3.     使用索引唯一扫描

    SELECT empno,ename FROM emp
    WHERE empno='2000'

    4.     使用并连接符号会使oracle忽略使用索用,即使是唯一索引

    SELECT empno,ename FROM emp
    WHERE empno||ename='2000naem'

    改成这样就可使用索引了

    SELECT * FROM emp
    WHERE empno=2000 AND ename='dd'

    5.     索引范围扫描

    SELECT * FROM emp
    WHERE empno<7000

    6where条件子句的解析顺序是从下到上的

    SELECT a.empno,b.dname FROM emp a,dept b
    WHERE a.ename<'CLERK'
    AND a.deptno=b.deptno;

    耗时1.016秒
     
    SELECT a.empno,b.dname FROM emp a,dept b
    WHERE  a.deptno=b.deptno
    AND a.ename<'CLERK';

    耗时0.813

    7.     使用通配符会使oracle不去使用索引

    SELECT ename FROM emp
    WHERE ename LIKE '%C%'

    应改成

    SELECT ename FROM emp
    WHERE ename LIKE 'C%'

     

    8.     使用唯一索引查找精确值是最快的,而索引范围扫描比较适合查找>=,<=的数据

    SELECT a.itemid
    FROM   pt_sche_detail a,
           pt_post_role   b
    WHERE  a.itemid = b.taskid
    AND    a.docid = 2281
    AND    a.itemid != 1169015
    AND    a.status != 0
    AND    b.posttype = 1
    AND    b.roleid = 1022
    AND    b.roletype = 1

    上面的语句改成:

    SELECT a.itemid
    FROM   pt_sche_detail a,
           pt_post_role   b
    WHERE  a.itemid = b.taskid
    AND    a.docid = 2281
    AND    a.itemid != 1169015
    AND    a.status != 0
    AND    b.taskid IN
           (SELECT itemid
             FROM   pt_sche_detail temp
             WHERE  temp.docid = 2281
             AND    rownum <= (SELECT COUNT(itemid) FROM pt_sche_detail temp WHERE temp.docid = 2281))
    AND    b.roleid = 1022
    AND    b.roletype = 1
    AND    b.posttype = 1

  • 相关阅读:
    图片懒加载
    浅谈javascript的函数节流
    js字符串常用方法详解
    js数组详解
    thinkphp3.2 批量添加数据
    openssl证书及配置
    手机访问PC端
    mui框架(三)
    mui框架(二)
    mui框架(一)
  • 原文地址:https://www.cnblogs.com/huangf714/p/5876316.html
Copyright © 2011-2022 走看看