适时增加Distinct提高查询效率Oracle认证考试

文章作者 100test 发表时间 2010:01:17 22:34:14
来源 100Test.Com百考试题网


  只有增加DISTINCT关键字,Oracle必然需要对后面的所有字段进行排序。以前也经常发现由于开发人员对SQL不是很理解,在SELECT列表的20多个字段前面添加了DISTINCT,造成查询基本上不可能执行完成,甚至产生ORA-7445错误。所以一直向开发人员强调DISTINCT给性能带来的影响。

  没想到开发人员在测试一条大的SQL的时候,告诉我如果加上了DISTINCT,则查询大概需要4分钟左右可以执行完,如果不加DISTINCT,则查询执行了10多分钟,仍然得不到结果。

  首先想到的是可能DISTINCT是在子查询中,由于加上了DISTINCT,将第一步结果集缩小了,导致查询性能提高,结果一看SQL,发现DISTINCT居然是在查询的最外层。

  由于原始SQL太长,而且牵扯的表太多,很难说清楚,这里模拟了一个例子,这个例子由于数据量和SQL的复杂程度限制,无法看出二者执行时间上的明显差别。这里从两种情况的逻辑读对比来说明问题。

  首先建立模拟环境: 

SQL

相关文章


Oracle10g创建表空间和用户并指定权限Oracle认证考试
Oracle查询表、视图、序列等信息查询Oracle认证考试
一个enqueue等待事件的分析Oracle认证考试
OracleRedo并行机制Oracle认证考试
适时增加Distinct提高查询效率Oracle认证考试
国产数据库能走多远?Oracle认证考试
Oracle中通过存储过程中返回数据集Oracle认证考试
Oracle数据库中时间处理Oracle认证考试
把Oracle表中的数据导出成Txt格式Oracle认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛