Пейджинг и большие таблицы SQL Server - PullRequest
0 голосов
/ 16 декабря 2010

У меня в базе данных две таблицы базы данных с более чем 30 миллионами записей. При объединении их и использовании row_number() для подкачки запроса требуется много времени и много ресурсов!Как можно отследить эти таблицы:

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

Есть ли идеальное решение?

1 Ответ

2 голосов
/ 16 декабря 2010

Если вы используете OPTION FAST(n), он оптимизирует запрос для предоставления такого количества записей. Раньше я успешно использовал это для таблиц с +20 миллионами записей, сократив время выполнения с минут до миллисекунд .

Однако, если вы используете это для 10 000-й страницы, которая окажется 1 000 000-й записью, она не будет работать. Если ваши пользователи хотят сделать что-то подобное, вам нужно создать упорядоченный снимок и выполнить запросы из этого.

...