下面的查询可以优化吗?SQL - 为大表优化日期计算
select
max(date), sysdate - max(date)
from
table;
查询执行时间〜5.7秒
我有另一种方法
select
date, sysdate - date
from
(select * from table order by date desc)
where
rownum = 1;
查询执行〜7.9秒
在这种特殊情况下,表中有大约1700万项。
有没有更好的方法来重写呢?
更新:好吧,我尝试了一些你在数据库开发中建议的提示,尽管它的子集比原来的(约1,000,000条记录)要小。没有索引,查询运行速度比索引慢。
第一个查询,没有索引:〜0.56秒,索引:〜0.2秒。第二个查询,没有索引:〜0.41秒,索引:〜0.005秒。 (这让我感到吃惊,我认为第一个查询会比第二个查询更快,也许它更适合更小的记录集)。
我建议DBA这个解决方案,他会改变表结构以适应这种情况,然后我会用实际数据测试它。谢谢
'date'是表中的一个字段吗? – wallyk 2012-07-27 15:44:30
这将始终需要全表扫描,我没有看到任何方式来优化它。 – 2012-07-27 15:47:27
@wallyk是的,它是! – joeygs 2012-07-27 15:57:12