Il est très avantageux de stocker des données dans des tables temporaires SQL Server plutôt que de manipuler ou de travailler avec des tables permanentes. Disons que vous voulez un accès DDL ou DML complet à une table, mais ne l’avez pas. Vous pouvez utiliser votre accès en lecture existant pour extraire les données dans une table temporaire SQL Server et effectuer des ajustements à partir de là. Ou vous n’avez pas les autorisations pour créer une table dans la base de données existante, vous pouvez créer une table temporaire SQL Server que vous pouvez manipuler., Enfin, vous pourriez être dans une situation où vous avez besoin que les données soient visibles uniquement dans la session en cours.
SQL Server prend en charge quelques types de tables temporaires SQL Server qui peuvent être très utiles.
avant de continuer, si vous voulez suivre avec des exemples de code, je suggère d’ouvrir SQL Server Management Studio:
tables locales SQL temp
Les tables locales SQL Server temp sont créées en utilisant le symbole de livre ou « hashtag” suivi du nom de la table. Par exemple: #Table_name. Les tables SQL temp sont créées dans la base de données tempdb., Une table temporaire SQL Server locale n’est visible que pour la session en cours. Il ne peut pas être vu ou utilisé par des processus ou des requêtes en dehors de la session dans laquelle il est déclaré.
Voici un exemple rapide de prendre un jeu de résultats et de le mettre dans une table temporaire SQL Server.
L’un des scénarios les plus souvent utilisés pour les tables temporaires SQL Server se trouve dans une boucle quelconque. Par exemple, vous souhaitez traiter des données pour une instruction SQL et vous avez besoin d’un emplacement pour stocker des éléments pour que votre boucle puisse être lue. Il fournit un moyen rapide et efficace de le faire., Voir l’exemple de code ci-dessus, votre boucle peut maintenant référencer la table temporaire SQL Server et traiter les enregistrements qui répondent aux critères de votre objectif.
Une autre raison d’utiliser les tables temporaires SQL Server est que vous avez un traitement exigeant à faire dans votre instruction sql. Disons que vous créez une jointure, et chaque fois que vous devez extraire des enregistrements de cet ensemble de résultats, il doit traiter cette jointure à nouveau. Pourquoi ne pas simplement traiter cet ensemble de résultats une fois et jeter les enregistrements dans une table temporaire SQL? Ensuite, vous pouvez demander au reste de l’instruction sql de se référer au nom de la table temporaire SQL., Non seulement cela permet d’économiser sur le traitement coûteux des requêtes, mais cela peut même rendre votre code un peu plus propre.
Il y a un point que je veux faire cependant. Si la session dans laquelle nous travaillons a des sessions imbriquées suivantes, les tables temporaires SQL Server seront visibles dans les sessions inférieures dans la hiérarchie, mais pas au-dessus dans la hiérarchie. Permettez-moi d’illustrer ce.
dans ce diagramme rapide, une table temporaire SQL est créée dans la Session 2. Les sessions ci-dessous (sessions 3 et session 4) peuvent voir la table temporaire SQL Server., Mais la Session 1, qui est au-dessus de la session 2, ne pourra pas voir la table temporaire SQL Server.
Le SQL de la table temporaire est abandonné ou détruit une fois la session se déconnecte. Plusieurs fois, vous verrez les développeurs utiliser la commande « DROP # Table_Name » à la fin de leur instruction juste pour nettoyer. Mais il est entièrement à vous et ce que vous essayez d’accomplir.,
notez également qu’en cas de conflit de nom (rappelez-vous que les tables temporaires SQL Server sont créées dans tempdb), SQL server ajoutera un suffixe à la fin du nom de la table afin qu’il soit unique dans la base de données tempdb. Mais ce processus est transparent pour le développeur/utilisateur. Vous pouvez utiliser le même nom que vous avez déclaré car il est limité à cette session.
tables temporaires SQL globales
Les tables temporaires SQL globales sont utiles lorsque vous voulez que le jeu de résultats soit visible pour toutes les autres sessions. Pas besoin de configurer les autorisations., Tout le monde peut insérer des valeurs, modifier ou récupérer des enregistrements de la table. Notez également que n’importe qui peut laisser tomber la table. Comme les tables temporaires SQL Server locales, elles sont supprimées une fois la session déconnectée et il n’y a plus de références à la table. Vous pouvez toujours utiliser la commande” DROP » pour le nettoyer manuellement. Ce qui est quelque chose que je recommanderais.
pour créer une table temporaire SQL globale, vous utilisez simplement deux symboles de livre devant le nom de la table. Exemple: # # Global_Table_Name.,
Variables de Table
Les variables de Table sont créées comme toute autre variable, en utilisant L’instruction DECLARE. Beaucoup croient que les variables de table n’existent que dans la mémoire, mais ce n’est tout simplement pas vrai. Ils résident dans la base de données tempdb tout comme les tables temporaires SQL Server locales. De plus, comme les tables temporaires SQL locales, les variables de table ne sont accessibles que dans la session qui les a créées. Cependant, contrairement aux tables temporaires SQL, la variable table n’est accessible que dans le lot en cours. Ils ne sont pas visibles en dehors du lot, ce qui signifie que le concept de hiérarchie de session peut être quelque peu ignoré.,
en ce qui concerne les performances, les variables de table sont utiles avec de petites quantités de données (comme seulement quelques lignes). Sinon, une table temporaire SQL Server est utile pour passer au crible de grandes quantités de données. Ainsi, pour la plupart des scripts, vous verrez probablement l’utilisation d’une table temporaire SQL Server par opposition à une variable de table. Pour ne pas dire que l’un est plus utile que l’autre, c’est juste que vous devez choisir le bon outil pour le travail.
Voici un rapide exemple de configuration et utilisation d’une variable de table.,
Nous avons créé une variable de table qui contiendra des informations sur les quantités totales d’un certain produit vendu. C’est un exemple très simplifié, et nous ne l’utiliserions pas s’il contenait beaucoup de lignes. Mais si nous ne regardions que quelques produits, cela pourrait très bien. Une fois la variable de table remplie, vous pouvez ensuite la joindre en tant que table à une autre table et collecter toutes les informations dont vous avez besoin. Il y a donc beaucoup de flexibilité et permet au développeur d’être assez créatif.
Aussi, sur une note finale, en termes d’opérations sur les variables de table., Si un développeur annule une transaction qui inclut des modifications apportées aux variables de la table, les modifications apportées aux variables de la table dans cette transaction particulière resteront intactes. C’est-à-dire que d’autres parties de cette transaction en question seront annulées, mais tout ce qui fait référence à la variable de table ne le sera pas, sauf si cette partie de votre script est en erreur.,
- Auteur
- Derniers Posts
il a commencé sa carrière informatique dans le monde du helpdesk et a finalement déménagé dans le côté réseau/administrateur de systèmes de choses. Après un certain temps, il a développé une affection pour le travail avec des bases de données (principalement SQL Server) et a concentré sa carrière sur cela au cours des huit dernières années., Il a travaillé pour diverses industries dans des environnements petits et grands, tous avec des besoins différents.
SQL Shack lui a donné l’occasion de contribuer à une communauté qui lui a tant donné au fil des ans.,
voir tous les messages par Aamir Syed
- est SQL Server toujours crypté, pour le cryptage des données sensibles, droit pour votre environnement – juillet 27, 2018
- cas D’utilisation du magasin de requêtes dans SQL Server – 18 juillet 2018
- quand utiliser les tables temporaires SQL par rapport aux variables de table – 21 février 2017