2011-03-23 1 views
0

Je sais qu'il n'y a pas de variables globales dans T-SQL.L'utilisation d'une table TEMP pour stocker global Vars inefficace?

Je sais une alternative que je viens d'apprendre est que vous pouvez les stocker dans une table temporaire et il suffit de les mettre à jour comme nécessaire puis utilisez les valeurs de la table temporaire

Est-ce inefficace si un grand nombre de données? Je veux dire considérer ceci:

create table #vars (var1 int, var2 bigint, var3 int) 

    GO 

    insert #vars(0,0,0) -- default to 0 

    GO 

    Update #vars set var1 = 1 
    update #vars set var2 = 4 
    update #vars set var3 = 6 

    Then use var1, var2, and var 3 in a SQL statement here 

    GO 

    repeat this process...update and use 

GO 

...REPEAT 

donc je veux dire à chaque fois que j'envoie à jour plusieurs appels à SQL Server juste pour définir ces? Juste semble très inefficace à moi en termes de possibilité de plan d'exécution? Je suppose que je pourrais courir et voir, mais juste curieux si c'est généralement une mauvaise pratique?

Ce que je tentais de sortir de s'avoir à aimer la plupart des gens dup ces vars dans l'instruction SQL de chaque GO que je veux lots

+0

Quel est le contexte d'exécution? Est-ce que ceci est déclenché d'une application externe? Serait-il possible d'envelopper tout cela dans une procédure stockée? – Brosto

+0

J'effectue une grande quantité de données. Ainsi, chaque instruction batch batch créera environ 10000 enregistrements en fonction des valeurs de variable que j'ai définies. – PositiveGuy

+0

J'ai essayé d'envelopper ceci dans un sp. J'ai donc pris et déclaré les variables dans le sp et déplacé mes instructions GO T-sql vers le corps. Mais quand j'ai essayé d'utiliser ces variables déclarées en les plaçant dans chaque section Go, il n'a pas reconnu les variables – PositiveGuy

Répondre

0

bien au moins

Update #vars set var1 = 1 
update #vars set var2 = 4 
update #vars set var3 = 6 

peut être changé

Update #vars set var1=1,var2=4,var3=6 
+0

Je ne pense pas que les instructions de mise à jour peuvent être structurées de cette façon, c'est la syntaxe d'insertion. Mais vous pourriez faire: Mise à jour #vars SET var1 = 1, var2 = 4, var3 = 6 – Brosto

+0

@Brosto - tout à fait raison - je l'ai réparé. – Hogan