В чем разница между установкой размера выборки операторов в JDBC или запуском SQL-запроса с предложением LIMIT? - PullRequest
13 голосов
/ 17 сентября 2009

В чем разница между установкой размера выборки оператора в JDBC или запуском SQL-запроса с предложением LIMIT?

Ответы [ 2 ]

13 голосов
/ 17 сентября 2009

SQL LIMIT ограничит результаты вашего запроса SQL теми, которые попадают в указанный диапазон. Вы можете использовать его, чтобы показать первое число результатов X или диапазон от результатов X - Y.

размер выборки - это количество строк, физически извлекаемых из базы данных драйвером JDBC за один раз при прокрутке запроса ResultSet с помощью next(). Например, вы устанавливаете размер выборки запроса равным 100. При извлечении первой строки драйвер JDBC извлекает первые 100 строк (или все из них, если запрос удовлетворяет менее 100 строк). Когда вы извлекаете вторую строку, драйвер JDBC просто возвращает строку из локальной памяти - ему не нужно извлекать эту строку из базы данных. Эта функция повышает производительность за счет уменьшения количества вызовов (которые часто являются сетевыми передачами) в базу данных.

Таким образом, даже если установка размера выборки преобразуется JDBC в предложение SQL LIMIT, большая разница с форсированием SQL-запроса с помощью LIMIT заключается в том, что с JDBC вы все равно можете просматривать все результаты.

0 голосов
/ 14 июля 2014

SQL LIMIT применяется в первую очередь в тот момент, когда SQL-сервер создает набор результатов в качестве ответа на запрос. Это может иметь (и обычно имеет) влияние на используемый план запроса и, следовательно, также на время ответа сервера SQL. Результирующий набор содержит только строки, которые соответствуют пределу - вы не можете получить больше.

Размер выборки приходит позже, когда содержимое набора результатов передается клиенту. Подробнее см. Ответ Паскаля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...