Я стремлюсь к тому, чтобы страницы отчетов нашего веб-сайта были переработаны быстрее, и я стою на пороге того, как мне следует реализовать пейджинг.Наша база данных велика,> 150 миллионов записей.В большинстве наших отчетов требуются сложные данные из 5-10 таблиц, поэтому в каждой из них может быть 5 или 6 объединений и некоторые внутренние выборки.Очевидно, что это не быстрые запросы.
Чтобы реализовать разбиение на страницы на стороне базы данных, для каждого веб-запроса мне нужно запросить в базе данных строки для текущей страницы (скажем, 100 из 10000), но я такжепридется запросить базу данных снова, чтобы получить общее количество возможных строк.В результате я, по сути, выполняю весь запрос дважды, потому что запрос, чтобы получить общее количество записей, все равно должен будет выполнить все объединения и внутренние операции выбора, чтобы определить общее количество.
Не будет ли лучшевыполнить запрос один раз, вернуть все результаты, кэшировать его в сеансе и распечатать с помощью веб-кода?Я знаю, что первоначально извлекаю больше данных, но я только запускаю запрос, который может занять 30 - 60 секунд один раз вместо двух.
Это своего рода общий вопрос технологии, но в случае, если он имеет значение, яЯ использую .net 4.0 и Oracle 11g.