SQL-нумерация страниц, возвращающая общее количество записей перед нумерацией страниц - PullRequest
2 голосов
/ 22 июня 2011

Я использую хранимый процесс для разбивки на страницы сервера на большом наборе записей. Хранимый процесс имеет довольно сложное условие where.

Мне также нужно общее количество записей перед разбиением на страницы, чтобы иметь возможность визуализировать это числопользовательский интерфейс.

Как лучше всего это сделать?

на данный момент я делаю

ALTER PROCEDURE [Schema].[ReturnRecords]
@PageSize int = 20,
@StartIndex int = 0
AS
SELECT * FROM
(
    SELECT *, TOP(COUNT(e._ROWID) OVER ())
    FROM TABLE_NAME
    WHERE Column=1 AND Column1=2 AND Column2=2 AND Column3=2 AND Column4=2
) AS X
WHERE X.RowNum BETWEEN @StartIndex AND (@StartIndex + @PageSize)

, поэтому мой последний столбец записи содержит общее количествоколичество записей перед разбиением на страницы.

Альтернативой является создание временной таблицы с внутренним запросом, затем подсчет записей и возврат временной таблицы, но это не выглядит хорошим способом сделать это ...

Я бы хотел вернуть общее количество записей в качестве выходного параметра хранимого процесса

Есть идеи?

1 Ответ

4 голосов
/ 30 июля 2011

Выполнение второго запроса для подсчета может часто оказаться более эффективной стратегией. Смотрите сравнение производительности различных подходов здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...