Oracle
cwwhy
这个作者很懒,什么都没留下…
展开
-
ORACLE SQL性能优化系列 (四)
13. 计算记录条数 和一般的观点相反, count(*) 比count(1)稍快 , 当然如果可以通过索引检索,对索引列的计数仍旧是最快的. 例如 COUNT(EMPNO) (译者按: 在CSDN论坛中,曾经对此有过相当热烈的讨论, 作者的观点并不十分准确,通过实际的测试,上述三种方法并没有显著的性能差别) 14. 用Where子句替换HAVING子句原创 2005-06-27 12:54:00 · 715 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (十三) (十四) 完结篇
43. 用WHERE替代ORDER BYORDER BY 子句只在两种严格的条件下使用索引. ORDER BY中所有的列必须包含在相同的索引中并保持在索引中的排列顺序.ORDER BY中所有的列必须定义为非空. WHERE子句使用的索引和ORDER BY子句中所使用的索引不能并列. 例如: 表DEPT包含以下列: DEPT_CODE PK NOT原创 2005-06-27 13:08:00 · 826 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (十一) (十二)
36. 用UNION替换OR (适用于索引列)通常情况下, 用UNION替换WHERE子句中的OR将会起到较好的效果. 对索引列使用OR将造成全表扫描. 注意, 以上规则只针对多个索引列有效. 如果有column没有被索引, 查询效率可能会因为你没有选择OR而降低. 在下面的例子中, LOC_ID 和REGION上都建有索引.高效: SELECT LOC_ID , LOC_D原创 2005-06-27 13:06:00 · 984 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (九) (十)
27. 基础表的选择 基础表(Driving Table)是指被最先访问的表(通常以全表扫描的方式被访问). 根据优化器的不同, SQL语句中基础表的选择是不一样的.如果你使用的是CBO (COST BASED OPTIMIZER),优化器会检查SQL语句中的每个表的物理大小,索引的状态,然后选用花费最低的执行路径.如果你用RBO (RULE BASED OPTIMIZER) , 并且原创 2005-06-27 13:04:00 · 864 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (五) (六)
17. 使用表的别名(Alias)当在SQL语句中连接多个表时, 请使用表的别名并把别名前缀于每个Column上.这样一来,就可以减少解析的时间并减少那些由Column歧义引起的语法错误. (译者注: Column歧义指的是由于SQL中不同的表具有相同的Column名,当SQL语句中出现这个Column时,SQL解析器无法判断这个Column的归属) 18. 用EXISTS原创 2005-06-27 12:59:00 · 986 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (三)
8. 使用DECODE函数来减少处理时间 使用DECODE函数可以避免重复扫描相同记录或重复连接相同的表. 例如: SELECT COUNT(*),SUM(SAL) FROM EMP WHERE DEPT_NO = 0020 AND ENAME LIKE ‘SMITH%’; SELECT COUNT(*),SUM(SAL) FROM EMP WHERE原创 2005-06-27 12:52:00 · 827 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (七) (八)
24. 用EXPLAIN PLAN 分析SQL语句 EXPLAIN PLAN 是一个很好的分析SQL语句的工具,它甚至可以在不执行SQL的情况下分析语句. 通过分析,我们就可以知道ORACLE是怎么样连接表,使用什么方式扫描表(索引扫描或全表扫描)以及使用到的索引名称.你需要按照从里到外,从上到下的次序解读分析的结果. EXPLAIN PLAN分析的结果是用缩进的格式排列的, 最内部的原创 2005-06-27 13:02:00 · 1096 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (二)
4. 选择最有效率的表名顺序(只在基于规则的优化器中有效)4. 选择最有效率的表名顺序(只在基于规则的优化器中有效)ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表 driving table)将被最先处理. 在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.当ORACLE处理多个表时, 会运用排序及合并的方式连接它们.原创 2005-06-27 12:19:00 · 839 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (一)
1. 选用适合的ORACLE优化器 ORACLE的优化器共有3种: a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性) 设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS . 你当然也在SQL句级或是会话(session)原创 2005-06-27 12:10:00 · 841 阅读 · 0 评论 -
多条记录合并成一个字符串的SQL文
http://community.csdn.net/Expert/TopicView.asp?id=4667667举例:查询结果如下abcde我想组合成一个字符串abcde怎么办?查询结果是动态的有可能会有几个,几十个,几百个查询的结果是单列的SQL语句:select replace(max(sys_connect_by_path(a,,)),,,) from (selec原创 2006-04-27 16:29:00 · 3162 阅读 · 0 评论