SQL Server 2005
У меня есть 10 миллионов строк в БД, и я запускаю выбор (с большим количеством "где" и соединений ... довольно сложный). Результаты представлены в сетке (например, результаты goolge), и поэтому пользователь не может использовать более 1000 результатов.
Так что я ограничиваю свой SQL ТОП 1000.
Проблема : Пользователь по-прежнему хочет знать, что для его поиска найдено 5432 результатов.
Могу ли я получить эту информацию, не заплатив цену (или, другими словами, все еще получая преимущества в скорости, которые дает мне «топ-1000»?)
Предположения
- Предположим, что TOP 1000 приносит 1000 из 100K строк. Так что даже сетевая цена перемещения 100K может быть проблемой.
Выводы
Там нет бесплатного обеда! Вы можете получить элегантный способ (принятый ответ), но он по-прежнему занимает больше времени, чем более дорогая операция (то есть подсчет всех результатов).
В реальной жизни я воспользуюсь подходом 2 SQL: один возвращает первые 1000 строк для отображения, а другой - ASYNC и обновляет некоторую панель AJAX с результатами count (*), которые будут намного дольше работать на компьютере