下面的查詢可以優化嗎?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