• 测试技术
  • 博客
  • 视频
  • 开源
  • 论坛
  • 沙龙
  • 下载
  • 杂志
  • 招聘

字号: | 推荐给好友 上一篇 | 下一篇

ORACLE SQL性能优化系列 (七)

发布: 2008-10-27 13:17 | 作者: black_snail  | 来源: net130 | 查看: 11次 | 进入领测软件测试网论坛讨论

领测软件测试网

l dq0^ ?`

48. 避免使用耗费资源的操作软件测试技术门户$| IW Z\ jA pS

  带有DISTINCT,UNION,MINUS,INTERSECT,ORDER BY的SQL语句会启动SQL引擎执行耗费资源的排序(SORT)功能. DISTINCT需要一次排序操作, 而其他的至少需要执行两次排序.软件测试技术门户@T%oz7e[jXMwit7Z

  例如,一个UNION查询,其中每个查询都带有GROUP BY子句, GROUP BY会触发嵌入排序(NESTED SORT) ; 这样, 每个查询需要执行一次排序, 然后在执行UNION时, 又一个唯一排序(SORT UNIQUE)操作被执行而且它只能在前面的嵌入排序结束后才能开始执行. 嵌入的排序的深度会大大影响查询的效率.

K9Er;N[:x {'L

  通常, 带有UNION, MINUS , INTERSECT的SQL语句都可以用其他方式重写.软件测试技术门户#nN0G$S%Ik_[s

  译者按:如果你的数据库的SORT_AREA_SIZE调配得好, 使用UNION , MINUS, INTERSECT也是可以考虑的, 毕竟它们的可读性很强.软件测试技术门户!N:J&NK$f5DkD t

  49. 优化GROUP BY

gZ:H_ n A6F8U/J

  提高GROUP BY 语句的效率, 可以通过将不需要的记录在GROUP BY 之前过滤掉.下面两个查询返回相同结果但第二个明显就快了许多.软件测试技术门户%IpM1dF5X(A0U"v

  低效:

o9h,{-GsJ,L})fV

SELECT JOB , AVG(SAL)

tY@Cz!h(| m)C

FROM EMP软件测试技术门户$v