CTE, ROW_NUMBER и ROWCOUNT

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

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 записей.

11
задан suspectus 12 October 2017 в 10:01
поделиться