我在Oracle數據庫中有一個表,其中有一個timestamp列nextTime和一個字符串列destName。還有更多的列,但只有這兩個在這種情況下是相關的。我試圖設計一個查詢,該查詢將在特定時間間隔內返回具有nextTime的不同destName,並且返回的行數應該最大爲一千。當間隔內有超過一千個不同的destName時,我希望查詢返回一千行,而且更多或更少。Oracle SQL選擇不同的查詢以返回特定的行數
我實際上有工作的查詢,但它是太慢:
select destName
from (select /*+ index(tblDestNames tbldestnames_destname)*/ distinct destName
from (select /*+ index(tblDestNames tbldestnames_nextTime)*/ destName
from tblDestNames
where nextTime < :1 and nextTime >= :2 and destName is not null))
where rownum <= 1000;
如何設計一個更聰明的查詢或如何優化這一exisiting一個任何想法非常讚賞。
執行參數:1和2結合的方式,:1>:2?如果不是,查詢將不會返回任何內容。如果是的話,最好寫'nextTime> =:2和nextTime <:1'來強調參數的順序。 –
@Aleksi:感謝您的評論!是的,:1>:2總是如此。您建議的更改是有意義的,我會應用它。 – joaerl