2017-09-26 10 views
0

En termes simples, quelles seraient les principales différences entre la clause WITH & table temporaire?Quelle serait la différence entre la clause WITH et la table temporaire?

Dans quel scénario est-il préférable d'utiliser l'un plutôt que l'autre?

+0

Différence clé: la clause with doit être utilisée directement dans la requête associée. Avec les tables temporaires, vous pouvez les utiliser pendant votre session. Donc, leur durée de vie est différente. –

Répondre

2

La clause WITH est généralement utilisée dans une requête de sélection lorsque vous devez effectuer une jointure sur deux sous-requêtes contenant des clauses complexes telles que HAVING (mais pas nécessairement). D'une manière générale, la clause WITH ne peut être utilisée que dans une instruction SELECT.

Mais dans le cas où les données doivent être manipulées, ce qui signifie que vous voulez modifier les données sous certaines conditions ou même supprimer certaines lignes en fonction de certaines conditions complexes, vous préférez aller avec TEMP TABLE. Bien que la plupart des cas seraient atteints par WITH, il en résulte généralement un coût de logique complexe, dans TEMP tableau, vous pouvez avoir un couple d'instructions SQL différentes pour atteindre la même chose.

En outre, TEMP table est généralement utilisé comme une table de mise en scène plutôt que d'une vue pour SELECT requête à savoir TEMP tableau sont utilisés lorsque vous voulez charger des tonnes de données à partir S3, vous pouvez charger les données dans une table temporaire, analyser les données, supprimer la redondance et enfin fusionner dans la table d'origine en une seule fois.

Alors que la table TEMP est transitoire uniquement pour la session en cours, WITH est toujours réévaluée.

0

La principale différence est que la table temporaire est une table stockée. Un CTE est plus proche d'une vue, et vous aide à exprimer votre SQL d'une manière plus facile à lire, plus logique. Les mêmes différences s'appliquent entre les tables et les vues en ce qu'une table vous donne le potentiel de faire des choses de manière performante.

Si vous construisiez une requête très complexe ou qui devait être construite par étapes, la clause WITH/CTE vous aiderait à le faire. Cependant, si vous cherchez à stocker des données dans une table pour améliorer les performances, une table temporaire serait votre meilleur choix. De même, une table temporaire peut être utilisée encore et encore, donc si vous avez le même code utilisé dans plusieurs requêtes, vous pouvez considérer une table temporaire plutôt qu'un CTE.