Я пытаюсь вернуть страницу данных, а также подсчет строки всех данных в одной сохраненной процедуре, которая выглядит следующим образом:
WITH Props AS
(
SELECT *,
ROW_NUMBER() OVER (ORDER BY PropertyID) AS RowNumber
FROM Property
WHERE PropertyType = @PropertyType AND ...
)
SELECT * FROM Props
WHERE RowNumber BETWEEN ((@PageNumber - 1) * @PageSize) + 1 AND (@PageNumber * @PageSize);
Я Невозможно вернуть подсчет строки (наивысший номер строки).
Я знаю, что это уже обсуждалось (я видел это: Эффективный способ получения @@ Rowcount из запроса с использованием ROW_NUMBER ), но когда я добавляю подсчет (x) над (раздел на 1) в производительности CTE ухудшается и запрос выше, что обычно не требует времени навсегда выполнять. Я считаю, что это потому, что счет рассчитывается для каждой строки? Кажется, я не могу использовать CTE в другом запросе. Настольные опоры имеют 100K Records, CTE возвращает 5K записей.