我想 那麼rownum的功能就像如何從oracle數據庫中檢索上次更新的記錄?
select *
from EMP
order by last_Updated
where rownum < 20
此查詢需要大量的時間來檢索最後20行已經從一個表在Oracle數據庫中更新,而無需使用順序。使用ROWNUM
我想 那麼rownum的功能就像如何從oracle數據庫中檢索上次更新的記錄?
select *
from EMP
order by last_Updated
where rownum < 20
此查詢需要大量的時間來檢索最後20行已經從一個表在Oracle數據庫中更新,而無需使用順序。使用ROWNUM
您發佈沒有做什麼,你認爲它的查詢。該查詢將獲取20個任意行,然後按last_updated
列排序。如果您想要最近的20行,您需要在嵌套查詢中使用ORDER BY last_updated
,然後在外部查詢中應用rownum
謂詞。
SELECT *
FROM (SELECT *
FROM emp
ORDER BY last_updated desc)
WHERE rownum <= 20
假設last_updated
被索引,這應該是一個非常高效的查詢。您應該能夠對last_updated
索引執行最小/最大掃描,然後執行count stopkey
來僅提取前20行。如果你對這個查詢的性能有問題,你會得到什麼類型的查詢計劃?
請發佈包含表上任何索引的表定義,您可能只是在last_Updated字段中丟失了一個 – twoleggedhorse
ROWNUM值在通過查詢的謂詞階段之後分配給某行,但是在查詢執行任何排序之前或聚合 – tbone