Каков наилучший метод для подкачки с производительностью сетки данных? - PullRequest
1 голос
/ 21 декабря 2008

На сайте с большим количеством пользователей, обработка страниц должна выполняться в коде или с помощью хранимой процедуры. Если вы использовали кеширование, укажите факторы успеха.

Ответы [ 5 ]

3 голосов
/ 21 декабря 2008

99,9% времени, подкачка должна выполняться на сервере базы данных. Однако хранимые процедуры не требуются для этого, и, фактически, многие решения для хранимых процедур основаны на курсорах и довольно неэффективны. В идеале, используйте один SQL-оператор, адаптированный к вашей платформе базы данных, чтобы получить только те записи, которые вам нужны, и не более.

3 голосов
/ 21 декабря 2008

Лично я никогда не разбираюсь с вещами вне SQL Server. Я делаю это на уровне базы данных, как будто у вас есть миллион записей для разбивки на страницы, если вы извлекаете их на прикладном уровне и размещаете их там, вы уже платите огромную стоимость.

2 голосов
/ 21 декабря 2008

Я бы сделал это на уровне базы данных. Говоря о SQL Server 2005, я бы использовал новую функцию ROW_NUMBER (), посмотрите на: Результаты подкачки SQL Server 2005

Где типичный sql будет:

SELECT Row_Number() OVER(ORDER BY UserName) As RowID, UserFirstName, UserLastName
FROM Users
WHERE RowID Between 0 AND 9

Здесь http://aspnet.4guysfromrolla.com/articles/031506-1.aspx вы можете увидеть, как это работает, и изучить небольшой тест Скотта Митчелла.

1 голос
/ 21 декабря 2008

Большинство поставщиков баз данных предлагают расширенную поддержку подкачки в базе данных. Используйте его ;-p Обратите внимание, что для этого не обязательно использовать хранимую процедуру (я откажусь от постоянных дебатов по вопросу о сохраненных командах и специальных командах).

Кроме того, многие фреймворки также сделают это для вас эффективно. Например, в .NET 3.5 (с LINQ) вы можете использовать Skip() и Take() для выполнения пейджинга, который используется в БД.

0 голосов
/ 21 декабря 2008

Я думаю Это зависит от количества записей, которые будут выгружены Например, у вас есть 100 записей для разбивки на страницы. Я думаю, что для этого не нужно ничего разбирать на страницы SQL. Я всегда стараюсь помнить о принципе KISS и преждевременной оптимизации.

...