Oracle语句优化53个规则详解(12)

来源:互联网 发布:mysql text 默认值 编辑:程序博客网 时间:2024/04/27 23:41
49.       优化GROUP BY
 提高GROUP BY 语句的效率,可以通过将不需要的记录在GROUP BY 之前过滤掉。下面两个查询返回相同结果但第二个明显就快了许多。
    低效:
  SELECT JOB AVGSAL
     FROM EMP
  GROUP by JOB
  HAVING JOB = PRESIDENT
  OR JOB = ‘MANAGER’
  高效:
  SELECT JOB AVGSAL
     FROM EMP
  WHERE JOB = ‘PRESIDENT’
 OR JOB = MANAGERGROUP by JOB
  译者按:本节和14节相同。可略过
     50.       使用日期当
  使用日期是,需要注意如果有超过5位小数加到日期上,这个日期会进到下一天!
     例如:
  1.
 SELECT TO_DATE(‘01-JAN-93+.99999
     FROM DUAL
  Returns:“01-JAN-93 235959
  2.
 SELECT TO_DATE(’01-JAN-93+.999999
     FROM DUAL
     Returns:“02-JAN-93 000000
 译者按:虽然本节和SQL性能优化没有关系,但是作者的功力可见一斑
  51.   使用显式的游标(CURSORs
     使用隐式的游标,将会执行两次操作。第一次检索记录,第二次检查TOO MANY ROWS 这个exception . 而显式游标不执行第二次操作。
     52.   优化EXPORTIMPORT
  使用较大的BUFFER(比如10MB 10240000)可以提高EXPORTIMPORT的速度。
     ORACLE将尽可能地获取你所指定的内存大小,即使在内存不满足,也不会报错。这个值至少要和表中最大的列相当,否则列值会被截断。
     译者按:可以肯定的是,增加BUFFER会大大提高EXPORT IMPORT的效率。(曾经碰到过一个CASE增加BUFFER后,IMPORT/EXPORT快了10倍!)
     作者可能犯了一个错误:“这个值至少要和表中最大的列相当,否则列值会被截断。”其中最大的列也许是指最大的记录大小。
     关于EXPORT/IMPORT的优化,CSDN论坛中有一些总结性的贴子,比如关于BUFFER参数, COMMIT参数等等,详情请查。
     53.   分离表和索引
  总是将你的表和索引建立在不同的表空间内(TABLESPACES)。决不要将不属于ORACLE内部系统的对象存放到SYSTEM表空间里。同时,确保数据表空间和索引表空间置于不同的硬盘上。
     译者按:“同时,确保数据表空间和索引表空间置与不同的硬盘上。”可能改为如下更为准确“同时,确保数据表空间和索引表空间置与不同的硬盘控制卡控制的硬盘上。”
原创粉丝点击