ORACLE优化SQL语句提高效率(3)Oracle认证考试

文章作者 100test 发表时间 2009:11:20 16:54:21
来源 100Test.Com百考试题网


"tb42" class="mar10">

  (29)用WHERE替代ORDER BY:

  ORDER BY 子句只在两种严格的条件下使用索引。

  ORDER BY中任何的列必须包含在相同的索引中并保持在索引中的排列顺序。

  ORDER BY中任何的列必须定义为非空。

  WHERE子句使用的索引和ORDER BY子句中所使用的索引不能并列。

  例如: 表DEPT包含以下列:

  DEPT_CODE PK NOT NULL

  DEPT_DESC NOT NULL

  DEPT_TYPE NULL

  低效: (索引不被使用)

  SELECT DEPT_CODE FROM DEPT ORDER BY DEPT_TYPE

  高效: (使用索引)

  SELECT DEPT_CODE FROM DEPT WHERE DEPT_TYPE >. 0

  (30)避免改变索引列的类型:

  当比较不同数据类型的数据时, ORACLE自动对列进行简单的类型转换。 假设 EMPNO是个数值类型的索引列:SELECT … FROM EMP WHERE EMPNO = ‘123。 实际上,经过Oracle类型转换, 语句转化为: SELECT … FROM EMP WHERE EMPNO = TO_NUMBER(‘123) 。

  幸运的是,类型转换没有发生在索引列上,索引的用途没有被改变。现在,假设EMP_TYPE是个字符类型的索引列:SELECT … FROM EMP WHERE EMP_TYPE = 123 。

  这个语句Oracle转换为: SELECT … FROM EMP WHERETO_NUMBER(EMP_TYPE)=123。因为内部发生的类型转换, 这个索引将不会被用到! 为了避免Oracle对您的SQL进行隐式的类型转换,最好把类型转换用显式表现出来。注意当字符和数值比较时,Oracle会优先转换数值类型到字符类型。

  (31)需要当心的WHERE子句:

  某些SELECT 语句中的WHERE子句不使用索引。这里有一些例子:

  (1)‘!= 将不使用索引。记住, 索引只能告诉您什么存在于表中, 而不能告诉您什么不存在于表中。

  (2)‘||是字符连接函数。就象其他函数那样, 停用了索引。

  (3)‘ 是数学函数。就象其他数学函数那样, 停用了索引。

  (4)相同的索引列不能互相比较,这将会启用全表扫描。

  (32)a. 假如检索数据量超过30%的表中记录数,使用索引将没有显着的效率提高。

  b. 在特定情况下,使用索引也许会比全表扫描慢,但这是同一个数量级上的区别。而通常情况下,使用索引比全表扫描要块几倍乃至几千倍!

  (33)避免使用耗费资源的操作:

  带有DISTINCT,UNION,MINUS,INTERSECT,ORDER BY的SQL语句会启动SQL引擎执行耗费资源的排序(SORT)功能。DISTINCT需要一次排序操作,而其他的至少需要执行两次排序。通常,带有 UNION, MINUS , INTERSECT的SQL语句都能够用其他方式重写。假如您的数据库的SORT_AREA_SIZE调配得好。使用UNION , MINUS, INTERSECT也是能够考虑的, 毕竟他们的可读性很强。

  (34)优化GROUP BY:

  提高GROUP BY 语句的效率,能够通过将无需的记录在GROUP BY 之前过滤掉。下面两个查询返回相同结果但第二个明显就快了许多。

  低效: SELECT JOB , AVG(SAL) FROM EMP GROUP JOB HAVING JOB = ‘PRESIDENT OR JOB = ‘MANAGER 高效: SELECT JOB , AVG(SAL) FROM EMP WHERE JOB = ‘PRESIDENT OR JOB = ‘MANAGER GROUP JOB

  编辑特别推荐:

  ORACLE优化SQL语句提高效率(1)

  ORACLE优化SQL语句提高效率(2)



相关文章


查看修改ORACLE10G归档日志空间的限制Oracle认证考试
oracle的xmltype例子Oracle认证考试
在oracle中改变字段在表中的顺序Oracle认证考试
OracleTech:关于Oracle的TNSOracle认证考试
ORACLE优化SQL语句提高效率(3)Oracle认证考试
ORACLE优化SQL语句提高效率(2)Oracle认证考试
ORACLE优化SQL语句提高效率(1)Oracle认证考试
Oracle认证辅导:Oracle的约束和索引Oracle认证考试
ORACLE误删数据的恢复Oracle认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛