Я пытаюсь вернуть страницу данных, а также количество строк из всех данных в одной хранимой процедуре, которая выглядит следующим образом:
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), но когда я добавляю COUNT (x) OVER (PARTITION BY 1) в производительности CTE, и запрос выше что обычно не требует времени, которое требуется для выполнения. Я считаю, потому что подсчет рассчитывается для каждой строки? Кажется, я не могу повторно использовать CTE в другом запросе. Table Props имеет 100k записей, CTE возвращает 5k записей.