Oracle データベースにタイムスタンプ列 nextTime と文字列列 destName を持つテーブルがあります。他にも列がありますが、この場合に関連するのはこれらの 2 つだけです。特定の間隔内に nextTime を持つ個別の destName を返すクエリを設計しようとしています。返される行数は最大 1000 です。間隔内に1000を超える異なるdestNameがある場合、クエリで1000行を返す必要があります。
私は実際に機能しているクエリを持っていますが、遅すぎます:
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;
よりスマートなクエリを設計する方法、またはこの既存のクエリを最適化する方法についてのアイデアは非常に高く評価されます。