2008-09-04 7 views
1

Dans une procédure stockée, quand est #temptable 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?SQL Server 2005 Tableaux temporaires

if (@x = 1) 
    begin 
     select 1 as Text into #Temptable 
    end 
else 
    begin 
     select 2 as Text into #Temptable 
    end 

Répondre

1

question intéressante.

Pour le type de table temporaire que vous créez, je pense qu'il 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 ont été créées. Une fois la session terminée, elles sont supprimées.

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éés lorsque les plans d'exécution de la requête sont créés.

2

Il est créé lorsqu'il est exécuté et supprimé à la fin de la session.

1

Bien qu'il puisse être abandonné automatiquement à la fin d'une session, il est bon de laisser tomber la table vous-même lorsque vous avez terminé avec elle.

1

Vous pouvez également considérer les variables de table, dont le cycle de vie est entièrement géré pour vous. J'utilise presque toujours cette approche, mais elle a 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.