Размер запросов SQL - имеет ли это большое значение? - PullRequest
3 голосов
/ 27 октября 2010

У меня есть SQL-запрос (MyQSL DB, использующий .Net SqlClient), который возвращает набор данных.Если размер набора данных составляет 4000 строк или 20, есть ли значительная разница во времени выполнения?
Кроме того, сколько времени выполнения запроса затрачивается на открытие соединения и т. Д. По сравнению со временемзаполнить таблицу результатов?

Спасибо.

Пояснение (правка):
Каждая из 4000 строк представляет имя папки.Я хочу отфильтровать их так, чтобы пользователям не приходилось видеть их всех, а только интересующие их.
Я не уверен, что лучше: фильтрация до получения имен из БД (он находится на другом компьютере), что может усложнить мой запрос или только отфильтровать представление (дерево, которое видит пользователь).Эти 4000 строк могут превратиться в 40000, но я не уверен, что это будет актуально для этой проблемы.Еще раз спасибо.

Повторное редактирование:
БД находится в сети, но соединение довольно быстрое, скажем, 100 Мбит.

Ответы [ 5 ]

1 голос
/ 27 октября 2010

нет, нет существенной разницы. выбор 4000 строк не займет 200 раз больше, чем выбор 20 строк - разница минимальна, я думаю, вы все равно не заметите.

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

0 голосов
/ 27 октября 2010

Во-первых, это стоимость ввода-вывода в сети, которая в точности соответствует линейному размеру результата.

Затем существуют такие вещи, как размеры буфера, размеры пакетов и размеры кэша, которые могут привести к падению запросаот нелинейного обрыва, как только он достигнет определенного размера.

И затем, если ваша таблица такова, что первые 20 соответствующих строк могут быть быстро найдены, тогда как 21-я строка появляется только после длительного процесса сканирования,тогда ограничение результата до 20 строк приведет к гораздо более быстрым результатам.

Что вам нужно сделать, это профилировать вашу конкретную настройку.Это единственный способ быть уверенным.

0 голосов
/ 27 октября 2010

Да или нет.Забудь о казни - там ее нет.Речь идет о скорости передачи по сети (если база данных находится на другом компьютере) и о вашем собственном локальном поведении.Не столько сам набор данных, сколько то, что вы с ним делаете.Браузеру требуется больше времени на рендеринг таблицы с 4000 строками, чем с 20 и т. Д.

С этими ограничениями влияние должно быть низкимСтановится интереснее, если 4000 превратится в 40.000.

0 голосов
/ 27 октября 2010

Спроси себя об этом.Если вам нужно получить в 200 раз больше файла с веб-сервера, это займет больше времени?Я думаю, что разница в БД зависит от дизайна БД, но не будет проблемой.Производительность кода при размещении данных в строках на стороне клиента не будет проблемой.Однако проблема будет заключаться в передаче данных по сети.

Конечно, ваше сетевое соединение может быть очень быстрым, поэтому оно по-прежнему незначительно.

0 голосов
/ 27 октября 2010

Время выполнения, потраченное на открытие соединения или, скорее, на установление соединения, ничтожно мало.Также я не думаю, что будет какое-то значительное время, затрачиваемое на выборку записей в порядке тысяч, поскольку базы данных сильно оптимизированы для обслуживания, например, миллионов записей.Однако по мере увеличения размера набора данных в вашем приложении будут наблюдаться некоторые задержки производительности, а не время выборки запроса.

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