oracle sql Разработчику нужно время, чтобы получить все записи - PullRequest
0 голосов
/ 09 июля 2020

Мой запрос выдает результат менее чем за секунду для первых 50 записей в Oracle SQL Developer. Когда я выбираю все (Ctrl + A) в результатах запроса, для получения всех записей (165k) требуется 120 секунд. Не могли бы вы посоветовать мне, есть ли возможности для оптимизации этого?

Можете ли вы также объяснить, как запрос работает для первых 50 записей результата, а затем для остальных записей? Выбирает ли механизм SQL остальные записи из блоков данных ИЛИ из кэша результатов?

Большое спасибо, Асит

Ответы [ 3 ]

2 голосов
/ 09 июля 2020

Здесь может быть много факторов, наиболее очевидным из которых являются записи. 165 000 записей - это не слишком большой вопрос, но насколько велика каждая отдельная запись? Помните, что эти записи должны быть прочитаны из БД, переданы по сети, а затем обработаны самим SQL разработчиком.

Когда я столкнулся с этой проблемой, вы обычно можете посмотреть sql Процесс разработчика увеличивает нагрузку на ЦП и ОЗУ, поскольку он пытается принять все эти записи в любой внутренний процесс, который он использует.

0 голосов
/ 09 июля 2020

SQL Разработчик останавливает выполнение, как только он выбирает первые 50 записей. Однако вы можете увеличить его до 200.

В SQL Developer, Go в Настройки -> База данных -> Дополнительно -> SQL Размер выборки массива (от 50 до 200) -> Измените значение на 200

0 голосов
/ 09 июля 2020

Для простого запроса (что-то вроде select * from some_table) я предполагаю, что каждый сегодняшний GUI делает то же самое - выбирает первые «n» (50, 100, 500) строк быстро . Он возвращает неупорядоченный набор и говорит: «Вот и ты, посмотри, что у тебя есть».

Но, если все идет немного сложнее, например, select count(*) from some_table или select * From some_table order by col1, тогда он должен получить все строк, а для больших таблиц это требует времени.

Кроме того, как запросы go wild (объединения, агрегаты и т. д.), это также делает его более сложным и требует больше времени.

Итак - сколько времени вы бы считали удовлетворительным для строк 165K? Ctrl + A требует времени.

...