D E.LOCN = L.LOCN
将比下列
更有效率
/*
低效的
SQL*/SELECT * FROM EMP E, LOCATION L, CATEGORY CWHERE
E.CAT_NO = C.CAT_NOAND E.LOCN =
L.LOCNAND E.EMP_NO BETWEEN 1000 AND 2000
6. Where
子句中的连接顺序
采用自下而上或自右向左的顺序解析
子句。根据这个原理
*
表之间的连
接必须写在其他
条件之前,那些可以过滤掉最大数量记录的条件必须写在
子句的末尾。
/*
低效
,
执行时间
156.3
秒
*/SELECT Column1,Column2 FROM EMP E WHERE
E.SAL > 50000 AND E.JOB = 'MANAGER'AND 25 < (SELECT COUNT(*)
FROM EMP WHERE MGR = E.EMPNO)
/*
高效
,
执行时间
10.6
秒
*/SELECT Column1,Column2FROM EMP EWHERE 25
< (SELECT COUNT(*) FROM EMPWHERE MGR=E.EMPNO)AND E.SAL >
50000 AND E.JOB = 'MANAGER'
7. SELECT
子句中避免使用“
*”
在解析
语句的时候,对于“
./
将通过查询数据库字典来将其转换成对应的
列名。
如果在
子句中需要列出所有的
01%
时,建议列出所有的
01%
名称,
而不是简单的用“
./
来替代,这样可以减少多于的数据库查询开销。
8.
减少访问数据库的次数
当执行每条
语句时
*
在内部执行了许多工作:解析
语句
估算索
引的利用率
绑定变量
读数据块等等
由此可见
*
减少访问数据库的次数
*
就能实际上减少
的工作量。
9.
整个简单无关联的数据库访问
如果有几个简单的数据库查询语句,你可以把它们整合到一个查询中(即使它们之间没
有关系),以减少多于的数据库
开销。
虽然采取这种方法,效率得到提高,但是程序的可读性大大降低,所以还是要权衡之间
的利弊。
10.
使用
Truncate
而非
Delete
表 中 记 录 的 时 候 ,
会 在
段 中 保 存 删 除 信 息 以 备 恢 复 。
0%
删除表中记录的时候不保存删除信息,不能恢复。因此
0%
删除记录
比
快,而且占用资源少。
删除表 中记录的 时候, 如果不需 要 恢 复的情况 之下应 该 尽量使用
0%
而不是
。
0%
仅适用于删除全表的记录。
11.
尽量多使用
COMMIT
只要有可能
*
在程序中尽量多使用
""*
这样程序的性能得到提高
*
需求也会因为
""
所释放的资源而减少。
""
所释放的资源:
文档被以下合辑收录
评论