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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top