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

本文探讨了如何通过优化SQL语句、利用日期函数、显示游标、改进EXPORT和IMPORT操作以及合理设置表空间来提高数据库性能。重点介绍了在GROUP BY语句中预筛选数据、避免日期计算错误、有效使用游标、优化数据导出导入流程和分离表与索引来提升整体效率的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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的优化,优快云论坛中有一些总结性的贴子,比如关于BUFFER参数, COMMIT参数等等,详情请查。
     53.   分离表和索引
  总是将你的表和索引建立在不同的表空间内(TABLESPACES)。决不要将不属于ORACLE内部系统的对象存放到SYSTEM表空间里。同时,确保数据表空间和索引表空间置于不同的硬盘上。
     译者按:“同时,确保数据表空间和索引表空间置与不同的硬盘上。”可能改为如下更为准确“同时,确保数据表空间和索引表空间置与不同的硬盘控制卡控制的硬盘上。”
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值