Sql优化系列之(2)__SQL优化整理(二)

2014-11-24 09:44:14 · 作者: · 浏览: 1
停用了索引. (4)相同的索引列不能互相比较,这将会启用全表扫描.
(13).sql语句用大写:
因为oracle总是先解析sql语句,把小写的字母转换成大写的再执行
-----------------------------------------------------------------------------------------------------
2.其他优化
1.最高效的删除重复记录方法
DELETE FROM EMP E WHERE E.ROWID > (SELECT MIN(X.ROWID)
FROM EMP X WHERE X.EMP_NO = E.EMP_NO);
2.用TRUNCATE替代DELETE
当删除表中的记录时,在通常情况下, 回滚段(rollback segments ) 用来存放可以被恢复的信息. 如果你没有COMMIT事务,ORACLE会将数据恢复到删除之前的状态(准确地说是恢复到执行删除命令之前的状况) 而当运用TRUNCATE时, 回滚段不再存放任何可被恢复的信息.当命令运行后,数据不能被恢复.因此很少的资源被调用,执行时间也会很短. (译者按: TRUNCATE只在删除全表适用,TRUNCATE是DDL不是DML)
3.使用COMMIT,释放空间
只要有可能,在程序中尽量多使用COMMIT, 这样程序的性能得到提高,需求也会因为COMMIT所释放的资源而减少:
COMMIT所释放的资源:
a. 回滚段上用于恢复数据的信息.
b. 被程序语句获得的锁
c. redo log buffer 中的空间
d. ORACLE为管理上述3种资源中的内部花费
参考链接:
1.SQL 优化原则 http://www.2cto.com/database/201303/192993. html