ITPub博客

首页 > 数据库 > Oracle > 记一条子查询的SQL优化

记一条子查询的SQL优化

原创 Oracle 作者:幕南风 时间:2014-07-03 13:43:17 0 删除 编辑
     表a 中有上百万条记录,且不断有新记录插入。
     

     现在要汇总此表中小于某个时间的记录条数,SQL两种写法如下:


     写法一:


select count(*)

from a

 where date < to_date(\'20100101\',\'YYYYMMDD\') ;


     写法二:


select count(*)

from ( select *

            from a

         where date < to_date(\'20100101\',\'YYYYMMDD\')

          ) ;


     结果发现:


               写法一等了十多分钟都不见有结果出来,而写法二一分钟左右就出了结果。
               原因应该是子查询先查出一个子结果集然后进行聚合操作,而非子查询的写法应该是边匹配边聚合

<!-- Baidu Button BEGIN -->

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26515977/viewspace-1207956/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 编写健壮的PL/SQL代码(一):同字段同类型、%TYPE、SUBTYPE
下一篇: PL/SQL每日一题:含有NULL的IF条件
请登录后发表评论 登录
全部评论
腾讯数据库工程师

注册时间:2012-05-10

最新文章