In che modo l'istruzione with memorizzare il set di record per la query di selezione?
-
29-09-2019 - |
Domanda
Si consideri il seguente SQL (SQL Server 2008) dichiarazione:
WITH MyResult AS
(
SELECT
Name,
Row_ID AS ORD
FROM Person Where Gender = @Gender
)
SELECT *
FROM MyResult
WHERE ORD > 5
Is MyResult memorizzato in una tabella temporanea nel tempdb? Oppure è fare qualcos'altro?
Stiamo ottimizzando alcune query e sarebbe lke per capire meglio con le dichiarazioni (internamente) a prestazioni di aiuto calibro etc.
Grazie
Soluzione
No, come da questo articolo di MSDN
... il CTE è un livello di lingua costruire-il che significa che SQL Server fa Non creare internamente temperatura o virtuale tavoli ...
E anche, come accennato qui :
Un'espressione di tabella comune (CTE) può essere pensato come un insieme di risultati temporanea che è definita all'interno dell'esecuzione ambito di una singola SELECT, INSERT, UPDATE, DELETE o CREATE VIEW dichiarazione. Una CTE è simile a un tabella derivata dal fatto che non è memorizzato come un oggetto e dura solo per la la durata della query.