Oracle认证:SQL条件的顺序对性能的影响
来源:优易学  2011-9-28 14:42:14   【优易学:中国教育考试门户网】   资料下载   IT书店

 

 SQL> set serverout on;

  SQL> select 1 from dual where f1('1')='1' and f2('1')='1';

  1

  ----------

  1

  exec F2

  exec F1

  SQL> select 1 from dual where f2('1')='1' and f1('1')='1';

  1

  ----------

  1

  exec F1

  exec F2

  结果表明,SQL条件的执行顺序是从右到左的。

  那么,根据这个结果来分析,把能使结果最少的条件放在最右边,是否会减少其它条件执行时所用的记录数量,从而提高性能呢?

  例如:下面的SQL条件,是否应该调整SQL条件的顺序呢?

  Where A.结帐id Is Not Null

  And A.记录状态<>0

  And A.记帐费用=1

  And (Nvl(A.实收金额, 0)<>Nvl(A.结帐金额, 0) Or Nvl(A.结帐金额, 0)=0)

  And A.病人ID=[1] And Instr([2],','||Nvl(A.主页ID,0)||',')>0

  And A.登记时间Between [3] And [4]

  And A.门诊标志<>1

  实际上,从这条SQL语句的执行计划来分析,Oracle首先会找出条件中使用索引或表间连接的条件,以此来过滤数据集,然后对这些结果数据块所涉及的记录逐一检查是否符合所有条件,所以条件顺序对性能几乎没有影响。

  如果没有索引和表间连接的情况,条件的顺序是否对性能有影响呢?再来看一个实验。

  实验四:证明了条件的顺序对性能没有影响。

  SQL> select count(*) from诊疗项目目录where操作类型='1';

  COUNT(*)

  ----------

  3251

  SQL> select count(*) from诊疗项目目录where类别='Z';

  COUNT(*)

  ----------

上一页  [1] [2] [3] 下一页

责任编辑:小草

文章搜索:
 相关文章
热点资讯
热门课程培训