Quelles sont la Principale diffrence entre la CCE et les tables temporaires?
Est-il un avantage à l'utilisation de CTE's
(common table expressions
) au lieu d'utiliser temp tables
.
Je suis passé par des tests de performance entre les deux, mais je ne trouve pas beaucoup de différence entre eux.
Quels sont certains des avantages et des inconvénients de l'utilisation de CTE'S
?
À partir de l'administrateur du site Quelle est la différence entre une expression de table commune et d'une Table temporaire?
Je ne sais pas beaucoup sur les différences de rendement, mais la cte est de permettre simple boucle et la récursivité, les tables temporaires sont à portée de main si un résultat de la requête sera consulté à plusieurs reprises et en ré-exécutant serait une perte de temps.
Ce sont des choses différentes, et vraiment c'est les chevaux pour les cours. Lequel est le mieux pour vous dépend de votre scénario exact. Votre question n'est pas moins ambigu que
CTE également effectuer plus lentement parce que les résultats ne sont pas mis en cache. Donc, chaque fois que vous utilisez la CTE il ré-exécute la requête, de plans et de tous les
Je ne sais pas beaucoup sur les différences de rendement, mais la cte est de permettre simple boucle et la récursivité, les tables temporaires sont à portée de main si un résultat de la requête sera consulté à plusieurs reprises et en ré-exécutant serait une perte de temps.
Ce sont des choses différentes, et vraiment c'est les chevaux pour les cours. Lequel est le mieux pour vous dépend de votre scénario exact. Votre question n'est pas moins ambigu que
What are the benefits of using Views rather than tables?
CTE également effectuer plus lentement parce que les résultats ne sont pas mis en cache. Donc, chaque fois que vous utilisez la CTE il ré-exécute la requête, de plans et de tous les
OriginalL'auteur GreatLakes07 | 2013-08-28
Vous devez vous connecter pour publier un commentaire.
Probablement la plus grande différence entre une expression de table commune et d'une table temporaire, c'est que le CCE a une portée d'exécution d'un unique SELECT, INSERT, UPDATE, DELETE, ou instruction CREATE VIEW.
Essentiellement, vous ne pouvez pas réutiliser le CTE, comme vous le pouvez avec des tables temporaires.
De la la documentation
WITH CTE AS (SELECT * FROM MillionRowTable) SELECT TOP 1 * FROM CTE
etINSERT INTO #T SELECT * FROM MillionRowTable; SELECT TOP 1 * FROM #T
votre commentaire a plus de voix que la réponse elle-même!!
Il peut aller dans l'autre sens aussi:
insert into #table
suivie parselect .. where xyz not in #table
est rapide, mais la réécriture comme un CTE rend super lent.OriginalL'auteur bastos.sergio
CTE : CTE stands pour les expressions de Table Communes. Il a été présenté avec SQL Server 2005. Il est utilisé pour stocker le résultat d'un complexe de sous-requête sur des bases temporaires. Sa durée de vie est limitée à la requête en cours. Il est défini par l'aide À la déclaration. Il est principalement utilisé pour l'appel récursif.
Exemple
(erreur)
ainsi, dans l'exemple ci-dessus, j'ai créer CTE nom que myCTE , qui ne peut être utilisée dans la requête ci-dessus (je ne peux pas utiliser myCTE côté de requête ci-dessus)
TEMP: Il est également utilisé pour stocker le résultat de la requête sur des bases temporaires.Mais Sa durée de vie est limitée à la session en cours. Il est défini à l'aide de #. Il ne prend pas en charge récursive.
Exemple:
Dans la requête ci-dessus, j'ai créé la table temporaire, maintenant je peux l'utiliser temp table à côté de cette requête, mais avec en session. Voir ci-dessous
(pas d'erreur)
OriginalL'auteur Sonu Rajpoot