Tables temporaires SQL Server 2005
-
09-06-2019 - |
Question
Dans une procédure stockée, quand #Temptable est-il créé dans SQL Server 2005 ?Lors de la création du plan d’exécution de la requête ou lors de l’exécution de la procédure stockée ?
if (@x = 1)
begin
select 1 as Text into #Temptable
end
else
begin
select 2 as Text into #Temptable
end
La solution
Question interessante.
Pour le type de table temporaire que vous créez, je pense que c'est lorsque la procédure stockée est exécutée.Les tables créées avec le préfixe # sont accessibles à la session SQL Server dans laquelle elles sont créées.Une fois la session terminée, ils sont supprimés.
Cette URL : http://www.sql-server-performance.com/tips/query_execution_plan_analysis_p1.aspx semble indiquer que les tables temporaires ne sont pas créées lors de la création des plans d'exécution de requêtes.
Autres conseils
Il est créé lors de son exécution et supprimé à la fin de la session.
Bien qu'elle puisse être automatiquement supprimée à la fin d'une session, il est conseillé de supprimer la table vous-même lorsque vous en avez terminé.
Vous pouvez également envisager des variables de table, dont le cycle de vie est entièrement géré pour vous.
DECLARE @MyTable TABLE (MyPK INT IDENTITY, MyName VARCHAR(100))
INSERT INTO @MyTable ( MyName ) VALUES ( 'Icarus' )
INSERT INTO @MyTable ( MyName ) VALUES ( 'Daedalus' )
SELECT * FROM @MyTable
J'utilise presque toujours cette approche, mais elle présente des inconvénients.Plus particulièrement, vous ne pouvez utiliser que des index que vous pouvez déclarer dans la construction TABLE(), ce qui signifie essentiellement que vous êtes limité à la clé primaire uniquement – sans utiliser ALTER TABLE.