Oracle の SQL ステートメントに大きな問題があります。STORAGE_DB によって並べ替えられた、他の select ステートメントのリストにない TOP 10 レコードを選択したいと考えています。
これはすべてのレコードでうまく機能します:
SELECT DISTINCT
APP_ID,
NAME,
STORAGE_GB,
HISTORY_CREATED,
TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') AS HISTORY_DATE
FROM HISTORY WHERE
STORAGE_GB IS NOT NULL AND
APP_ID NOT IN (SELECT APP_ID
FROM HISTORY
WHERE TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') = '06.02.2009')
しかし、私が追加しているとき
AND ROWNUM <= 10
ORDER BY STORAGE_GB DESC
ある種の「ランダムな」レコードを取得しています。注文前に制限がかかるからだと思います。
誰かが良い解決策を持っていますか?その他の問題: このクエリは非常に遅い (10k+ レコード)