Sto cercando di restituire una pagina di dati e anche remare conteggio di tutti i dati in una stored procedure che si presenta come segue:CTE, ROW_NUMBER e 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);
non sono in grado di restituire il conteggio delle righe (numero di riga più alto).
So che questo è già stato discusso (Ho visto questo: Efficient way of getting @@rowcount from a query using row_number), ma quando aggiungo COUNT (x) OVER (partizione DA 1) nelle prestazioni peggiorano CTE e la query sopra che normalmente non c'è bisogno di tempo per l'esecuzione. Suppongo che sia perché il conteggio è calcolato per ogni riga? Sembra che non riesca a riutilizzare il CTE in un'altra query. Table Props ha 100k records, CTE restituisce 5k records.
caso sostituire i tag come una domanda di SQL Server. L'avrei fatto per te, ma hai solo 5 tag e non sapevo quale vorresti rimuovere. –