270
Chapitre 8. Optimisation du code SQL
Figure 8.13 — Plans d’exécution
8.3.1 Tables temporaires
Les tables temporaires, bien qu’elles soient déclarées dans tempdb, restent en
mémoire, dans le buffer, jusqu’à ce qu’elles atteignent une taille qui nécessite leur
écriture sur disque.
À propos des variables de type table
SQL Server 2000 a introduit la variable de type table, c’est-à-dire la possibilité de
stocker une table dans une variable Transact-SQL. Cette facilité est utile pour
renvoyer une table à partir d’une fonction utilisateur. Elle peut aussi être utilisée à
l’intérieur d’une procédure stockée pour remplacer une table temporaire. Vous
entendrez parfois dire que la variable de type table est bien plus légère qu’une table
temporaire car elle n’est pas écrite dans tempdb et ne vit qu’en mémoire. C’est
erroné. La variable de type table est elle aussi stockée dans tempdb, comme une table
temporaire. SQL Server lui assigne un nom interne. Il est très simple de le
démontrer :
SELECT * FROM tempdb.INFORMATION_SCHEMA.TABLES
GO
DECLARE @t TABLE (id int)
SELECT * FROM tempdb.INFORMATION_SCHEMA.TABLES
GO
Vous verrez dans le deuxième apparaître une nouvelle référence de table dans les
métadonnées de tempdb, avec un nom ressemblant à ceci (exemple lors de notre
exécution) : #04CA11FE.
Précédent

- 282/334

Suivant