1 votes

Comment le WITH statement stocke-t-il l'ensemble d'enregistrements pour la requête SELECT ?

Considérez la déclaration 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

MyResult est-il stocké dans une table temporaire dans le tempdb ? Ou fait-il autre chose ?

Nous optimisons certaines requêtes et aimerions mieux comprendre les instructions WITH (internes) pour aider à évaluer les performances, etc.

Merci

2voto

AdaTheDev Points 53358

Non, selon cet article MSDN

...le CTE est une construction au niveau du langage—ce qui signifie que SQL Server ne crée pas de tables temporaires ou virtuelles en interne...

Et aussi, comme mentionné ici:

Une expression de table commune (CTE) peut être considérée comme un ensemble de résultats temporaire défini dans le cadre d'une seule instruction SELECT, INSERT, UPDATE, DELETE ou CREATE VIEW. Une CTE est similaire à une table dérivée en ce sens qu'elle n'est pas stockée en tant qu'objet et ne dure que pendant la durée de la requête.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X