Oracle SELECT TOP 10 записей

У меня большая проблема с оператором SQL в Oracle. Я хочу выбрать ТОП-10 записей, упорядоченных STORAGE_DB, которых нет в списке, из другого оператора выбора.

Этот работает отлично для всех записей:

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

Я получаю какие-то "случайные" записи. Я думаю, потому что предел имеет место перед заказом.

У кого-нибудь есть хорошее решение? Другая проблема: этот запрос очень медленный (10 тыс. + Записей)

Ответы на вопрос(5)

Ваш ответ на вопрос