У меня есть запрос к базе данных, который может привести к большому набору результатов. Клиент, который отображает данные, получает данные по сети, поэтому идея состояла в том, чтобы минимизировать объем передаваемых данных, извлекая только первые 50 результатов из базы данных и отправляя их клиенту. Затем я предоставлю возможность перейти на вторую страницу, чтобы получить следующие 50 результатов и т. Д. (Что-то похожее, что, например, предлагает Google)
Вопрос в том, каков эффективный способ реализации пейджинга. Я хочу убедиться, что mssql использует кеш как можно больше, и это не выполняется снова каждый раз, когда я меняю подкачку.
Есть больше клиентов, которые запрашивают базу данных одновременно. Используемый движок SQL: MS SQL 2005
Мои идеи были:
- Используйте подготовленные SQL-команды для обеспечения совместного использования плана выполнения.
- используйте переменную ROW_COUNT, чтобы получить только нужные строки
Но действительно ли это самый эффективный способ? Или вы думаете, что было бы лучше извлечь весь набор результатов и реализовать разбиение на страницы в коде, который отправляет данные клиенту?
Спасибо за ваши советы!
С уважением, Томас
источник
Это зависит от вашей среды. Я бы настроил тест с использованием обоих методов и посмотрел, какой из них лучше всего подходит для вас. Лично я бы страницу на сервере. Чем меньше данных по проводам и меньше данных в оперативной памяти клиента, тем лучше. Если вы можете управлять спецификациями клиентского компьютера, весь трафик идет по ненасыщенной локальной сети, и клиенты всегда быстро пролистывают несколько страниц, тогда вам может потребоваться страница на клиенте.
источник