下面的查询可以优化吗?
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秒
在这种特殊情况下,表格大约有17,000,000个条目。
有没有更好的方法来重写它?
更新:嗯,我尝试了一些你在数据库开发中建议的提示,尽管它的子集比原来的小(大约1,000,000条记录)。如果没有索引,查询的运行速度会慢于索引。
第一个查询,没有索引:~0.56秒,索引:~0.2秒。第二个查询,没有索引:~0.41秒,索引:~0.005秒。 (这让我感到惊讶,我认为第一个查询会比第二个查询运行得更快,也许它更适合于较小的记录集。)
我向DBA建议这个解决方案,他将更改表结构以适应这个,然后我将用实际数据测试它。感谢
答案 0 :(得分:3)
日期栏上是否有索引?
答案 1 :(得分:1)
该查询非常简单,除了在日期列上添加索引之外,可能无法对其进行优化。这个数据库是什么?并且是sysdate表的另一列吗?