知识大全 Oracle SQL性能优化系列学习三
Posted 函数
篇首语:没有伞的孩子必须学会努力奔跑。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle SQL性能优化系列学习三相关的知识,希望对你有一定的参考价值。
Oracle SQL性能优化系列学习三 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
正在看的ORACLE教程是:Oracle SQL性能优化系列学习三 使用DECODE函数来减少处理时间 使用DECODE函数可以避免重复扫描相同记录或重复连接相同的表 例如: SELECT COUNT(*) SUM(SAL) FROM EMP WHERE DEPT_NO = AND ENAME LIKE SMITH% ; SELECT COUNT(*) SUM(SAL) FROM EMP WHERE DEPT_NO = AND ENAME LIKE SMITH% ; 你可以用DECODE函数高效地得到相同结果 SELECT COUNT(DECODE(DEPT_NO X NULL)) D _COUNT COUNT(DECODE(DEPT_NO X NULL)) D _COUNT SUM(DECODE(DEPT_NO SAL NULL)) D _SAL SUM(DECODE(DEPT_NO SAL NULL)) D _SAL FROM EMP WHERE ENAME LIKE SMITH% ; 类似的 DECODE函数也可以运用于GROUP BY 和ORDER BY子句中 整合简单 无关联的数据库访问 如果你有几个简单的数据库查询语句 你可以把它们整合到一个查询中(即使它们之间没有关系) 例如: SELECT NAME FROM EMP WHERE EMP_NO = ; SELECT NAME FROM DPT WHERE DPT_NO = ; SELECT NAME FROM CAT WHERE CAT_TYPE = RD ; 上面的 个查询可以被合并成一个: SELECT E NAME D NAME C NAME FROM CAT C DPT D EMP E DUAL X WHERE NVL( X X DUMMY) = NVL( X E ROWID(+)) AND NVL( X X DUMMY) = NVL( X D ROWID(+)) AND NVL( X X DUMMY) = NVL( X C ROWID(+)) AND E EMP_NO(+) = AND D DEPT_NO(+) = AND C CAT_TYPE(+) = RD ; (译者按: 虽然采取这种方法 效率得到提高 但是程序的可读性大大降低 所以读者 还是要权衡之间的利弊) 删除重复记录 最高效的删除重复记录方法 ( 因为使用了ROWID) DELETE FROM EMP E WHERE E ROWID > (SELECT MIN(X ROWID) FROM EMP X WHERE X EMP_NO = E EMP_NO); 用TRUNCATE替代DELETE 当删除表中的记录时 在通常情况下 回滚段(rollback segments ) 用来存放可以被恢复的信息 如果你没有MIT事务 ORACLE会将数据恢复到删除之前的状态(准确地说是恢复到执行删除命令之前的状况) 而当运用TRUNCATE时 回滚段不再存放任何可被恢复的信息 当命令运行后 数据不能被恢复 因此很少的资源被调用 执行时间也会很短 (注 TRUNCATE只在删除全表适用 TRUNCATE是DDL不是DML) 尽量多使用MIT 只要有可能 在程序中尽量多使用MIT 这样程序的性能得到提高 需求也会因为MIT所释放的资源而减少: MIT所释放的资源: a 回滚段上用于恢复数据的信息 b 被程序语句获得的锁 c redo log buffer 中的空间 d Oracle为管理上述 种资源中的内部花费 (注 在使用MIT时必须要注意到事务的完整性 现实中效率和事务完整性往往是鱼和熊掌不可得兼) 如果DECODE取值为NULL SUM(NULL)的值是NULL >如果所有的值都是NULL SUM(NULL) = NULL 但是只要有一个值不是NULL SUM() <> NULL 所以原SQL应该没有什么逻辑上的问题 关于第八点的个人看法 如果DECODE取值为NULL SUM(NULL)的值是NULL 不会正常求和的 可以改成如下所示就好了 SELECT COUNT(DECODE(DEPT_NO X NULL)) D _COUNT COUNT(DECODE(DEPT_NO X NULL)) D _COUNT SUM(DECODE(DEPT_NO SAL )) D _SAL SUM(DECODE(DEPT_NO SAL )) D _SAL FROM EMP WHERE ENAME LIKE SMITH% ; cha138/Article/program/Oracle/201404/30542相关参考
ORACLESQL性能优化系列(十三) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 用WHER
Oracle学习应用之数据库性能优化策略 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 数据库系
自己对oraclesql的一些优化总结自己也记录下来也希望对大家有帮助 一使用where少使用having; 二查两张以上表时把记录少的放在右边; 三减少对表的访问次数; 四有where子
知识大全 oracle认证辅导:oracle优化和管理sql1
oracle认证辅导oracle优化和管理sql 查看当前正在执行的等待情况 SELECTTAsid TAseq# TBUsername TBTerminal TBProgram D
Oracle中优化SQL的原则 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 已经检验的语句和已
ORACLE优化SQL语句,提高效率(2) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 索引是
SQLServer性能优化工具 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 数据和工作负荷示例
系统优化中SQL的性能如何调整 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一问题的提出
SQLServer性能优化的原则 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 使SQLServ
高手详解SQL性能优化十条经验 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 查询的模糊匹配