Comment le WITH stocker le jeu d'enregistrements pour la requête de sélection?
-
29-09-2019 - |
Question
Considérez l'instruction SQL suivante (SQL Server 2008):
WITH MyResult AS
(
SELECT
Name,
Row_ID AS ORD
FROM Person Where Gender = @Gender
)
SELECT *
FROM MyResult
WHERE ORD > 5
est MonRésultat stocké dans une table temporaire dans le tempdb? Ou faut-il faire autre chose?
Nous optimisons des requêtes et lke pour mieux comprendre avec les déclarations (en interne) pour améliorer les performances de la jauge, etc.
Merci
La solution
Non, comme par cet article MSDN
... le CTE est un niveau de langue construire-à-dire que SQL Server ne pas créer en interne temporaire ou virtuel tables ...
Et aussi, comme mentionné ici :
Une expression de table commune (CTE) peut être considéré comme un ensemble temporaire de résultat qui est définie à l'intérieur de l'exécution la portée d'un seul SELECT, INSERT, UPDATE, DELETE ou CREATE VIEW déclaration. Un CTE est similaire à un table dérivée en ce qu 'il est pas stockée comme un objet et ne dure que le durée de la requête.