Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7853
  • 博文数量: 2
  • 博客积分: 74
  • 博客等级: 民兵
  • 技术积分: 60
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-21 12:33
文章分类
文章存档

2012年(2)

我的朋友
最近访客

分类: Oracle

2012-02-14 14:40:15

一.SQL 编写注意事项

1.1 查看SQL

对于生产环境上的SQL,可以从AWR 或者 Statspack 报告中获取相关的SQL 信息。



这部分参考:

Oracle AWR 介绍

http://blog.csdn.net/tianlesoftware/article/details/4682300



statspack安装使用 和report 分析

http://blog.csdn.net/tianlesoftware/article/details/4682329



查看SQL 的性能怎么样,最直接的工具就是通过执行计划,通过执行计划可以看到SQL 的执行路径,逻辑读,物理读等信息,可以这些信息,可以帮助我们判断SQL 是否还有优化的余地。


1.2 SQL 编写的具体注意事项

这部分工作是基本功。 在SQL 编写过程中, 避免一些低效的写法,能将SQL的效率提高几倍。 如:



to_char(created,'yyyy') = '2011'

trunc(created,'y') = to_date('01-jan-2011','dd-mon-yyyy')



与使用TRUNC 相比,使用TO_CHAR 所用的CPU 时间与前者相差一个数量级(即相差12倍)。因为TO_CHAR 必须把日期转换为一个串,这要使用一个更大的代码路径,并利用当前的所有NLS来完成这个工作。然后必须执行一个串与串的比较。另一方面,TRUNC 只需把后5 个字节设置为1.然后将两个7 字节的二进制数进行比较。因此,如果只是要截断一个DATE 列,你将应该避免使用TO_CHAR。



之前从网上下载了一篇文章sql调优的PPT,链接如下:www.cuug.com


阅读(1127) | 评论(0) | 转发(0) |
0

上一篇:Oracle数据库行迁移,行链接

下一篇:没有了

给主人留下些什么吧!~~