Выберите N произвольных строк из очень большой таблицы в Oracle - PullRequest
0 голосов
/ 26 апреля 2018

У меня очень большая таблица MY_TABLE (100 миллионов строк). Я хочу выбрать выборку из 5, скажем, записей из этой таблицы.

То, что я могу придумать, это получить 5 произвольных первичных ключей следующим образом, при этом используется быстрое полное сканирование, как показывает план объяснения:

select MY_PRIMARY_KEY_COLUMN from (select MY_PRIMARY_KEY_COLUMN, rownum as rn from MY_TABLE) where rn <=5 

и затем получение записей, соответствующих этим первичным ключам.

Однако это все еще очень, очень медленно ..

Можно ли сделать это более эффективно?

1 Ответ

0 голосов
/ 26 апреля 2018

Как это выглядит, я запутался. Как заметили комментаторы, с запросом

проблем быть не должно
select * from MY_TABLE where rownum <=5

но я как-то начал смотреть на

select MY_PRIMARY_KEY_COLUMN from (select MY_PRIMARY_KEY_COLUMN, rownum as rn from MY_TABLE) where rn <=5

который действительно работает очень медленно ..

Извините за трату времени всех, select * from MY_TABLE where rownum <=5 отлично работает.

...