Tenir compte de l'instruction SQL suivante (SQL Server 2008):Comment l'instruction WITH stocke-t-elle l'ensemble d'enregistrements pour la requête de sélection?
WITH MyResult AS
(
SELECT
Name,
Row_ID AS ORD
FROM Person Where Gender = @Gender
)
SELECT *
FROM MyResult
WHERE ORD > 5
est-MonRésultat stockées dans une table temporaire dans le tempdb? Ou fait-il quelque chose d'autre?
Nous optimisons des requêtes et lke pour mieux comprendre avec les déclarations (interne) pour améliorer les performances de calibre, etc.
Merci de
« ... un ensemble temporaire de résultat ... » déclenché notre façon de penser qu'un ensemble temporaire de résultat est stocké quelque part temporairement (c.-à-tempdb.) – Russell
@Russell - Oui, je peux voir où le libellé est un peu nuageux sur ce. En utilisant un CTE en lui-même, SQL Server ne crée pas de table temporaire. Bien sûr, comme toute requête, CTE ou sans CTE, il pourrait être renvoyé à tempdb en fonction de ce qui se passe. Mais ce n'est pas spécifique aux CTE – AdaTheDev