Практически во всех системах баз данных приложение, использующее данные; и СУБД, которая отвечает за хранение и поиск данных; живу на отдельных машинах. Они разговаривают друг с другом по сети. Даже если они находятся на одной и той же машине, сетевое соединение остается эффективным.
Это имеет значение, потому что есть некоторое время между тем, когда приложение решает, что оно готово для чтения данных, когда этот запрос поступает по сети на сервер базы данных, когда сервер базы данных фактически получает ответ на это, и когда ответ, наконец, приходит по сети на стороне приложения.
Когда вы делаете запрос для всего набора данных, вы оплачиваете эту стоимость только один раз; Хотя это может показаться расточительным; на самом деле гораздо эффективнее взять на себя бремя удержания всех данных в приложении, поскольку обычно проще выделить больше ресурсов приложению, чем сделать то же самое на сервере базы данных.
Когда ваше приложение извлекает данные только по одной строке за раз, тогда стоимость двусторонней связи между приложением и базой данных оплачивается один раз за строку; Если вы хотите показать заголовки 100 постов в блоге, то вы платите 100 поездок туда и обратно в базу данных для этого одного отчета. Что еще хуже, сервер баз данных должен каким-то образом отслеживать частично завершенный набор результатов. Обычно это означает, что ресурсы, которые могут быть использованы для запроса данных для другого запроса, вместо этого сохраняются приложением, которому не удалось запросить все данные, которые первоначально запрашивалось.
Основное правило - общаться с базой данных только тогда, когда вам это абсолютно необходимо, и сделать взаимодействие как можно более коротким; Это означает, что вы запрашиваете только те данные, которые вам действительно нужны (необходимо, чтобы база данных выполняла как можно больше фильтрации, а не в приложении), и принимайте все данные как можно быстрее, чтобы база данных могла перейти к другой. задача.