今天在客户的客户端实际环境中查核数据时发现一SQL优化方法:
表a 中有上百万条记录,且不断有新记录插入。
现在要汇总此表中小于某个时间的记录条数,SQL两种写法如下:
写法一:
select count(*)
from a
where date < to_date('20100101','YYYYMMDD') ;
写法二:
select count(*)
from ( select *
from a
where date < to_date('20100101','YYYYMMDD')
) ;
结果发现:写法一等了十多分钟都不见有结果出来,而写法二一分钟左右就出了结果。
原因应该是子查询先查出一个子结果集然后进行聚合操作,而非子查询的写法应该是边匹配边聚合。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10595277/viewspace-624952/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10595277/viewspace-624952/