92 votes

Est-il nécessaire d'utiliser # pour créer des tables temporaires dans le serveur SQL ?

Est-il nécessaire d'utiliser # avant de créer une table temporaire dans le serveur SQL ?

Ejemplo:

SELECT column1, column2, someInt, someVarChar 
INTO ItemBack1 
FROM table2
WHERE table2.ID = 7

Pour ItemBack1, est-il nécessaire d'utiliser l'outil de gestion des données ? # symbole ?

Si non, alors quelle est l'utilité de # dans la création de tables temporaires ?

152voto

mobiledaemon Points 508

Oui. Vous devez préfixer le nom de la table avec "#" (dièse) pour créer des tables temporaires.

Si vous n'avez PAS besoin de la table plus tard, allez-y et créez-la. Les tables temporaires ressemblent beaucoup aux tables normales. Cependant, elles sont créées dans tempdb. De plus, elles ne sont accessibles que par la session en cours. Par exemple, si un autre utilisateur essaie d'accéder à la table temporaire que vous avez créée, il ne pourra pas le faire.

"##" (le double hachage crée une table temporaire "globale" à laquelle d'autres sessions peuvent également accéder.

Consultez le lien ci-dessous pour connaître les principes de base des tables temporaires : http://www.codeproject.com/Articles/42553/Quick-Overview-Temporary-Tables-in-SQL-Server-2005

Si le contenu de votre table est inférieur à 5000 lignes et ne contient PAS de types de données tels que nvarchar(MAX), varbinary(MAX), envisagez d'utiliser des variables de table.

Ils sont les plus rapides car ils sont comme toutes les autres variables qui sont stockées dans la RAM. Ils sont également stockés dans tempdb, et non dans la RAM. .

DECLARE @ItemBack1 TABLE
(
 column1 int,
 column2 int,
 someInt int,
 someVarChar nvarchar(50)
);

INSERT INTO @ItemBack1
SELECT column1, 
       column2, 
       someInt, 
       someVarChar 
  FROM table2
 WHERE table2.ID = 7;

Plus d'informations sur les variables de table : http://odetocode.com/articles/365.aspx

14voto

zzlalani Points 7065

La différence entre ces deux tableaux ItemBack1 y #ItemBack1 est que le premier est persistant (permanent) alors que l'autre est temporaire.

Maintenant, si nous regardons à nouveau votre question

Est-il nécessaire d'utiliser # pour créer une table temporaire dans sql server ?

La réponse est car sans ce précédent # la table ne sera pas une table temporaire, elle sera indépendante de toutes les sessions et de tous les scopes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X