Non.
Cela était vrai il y a longtemps (et ce n'est plus le cas, au moins depuis SQL Server 2000), ou cela n'a jamais été vrai et votre administrateur de base de données a simplement confondu sa recommandation avec la suivante :
Il est important de regrouper toutes les instructions DDL (comme la création d'index) pour les tables temporaires au début d'une procédure stockée. En regroupant ces instructions DDL, des compilations inutiles dues à un changement de schéma peuvent être évitées.
Vous pouvez trouver une autre explication du raisonnement derrière cette recommandation sur cette page .
Si nous examinons cette base de connaissances Microsoft , nous constatons que la cause d'une recompilation de procédure stockée peut être l'une des suivantes (SQL Server 2005+):
- Le schéma a changé.
- Les statistiques ont changé.
- Recompilez DNR.
- Définir l'option modifiée.
- La table temporaire a changé.
- L'ensemble de lignes distant a été modifié.
- Pour les perms de navigation modifiées.
- L'environnement de notification de requête a changé.
- La vue MPI a changé.
- Les options du curseur ont été modifiées.
- Avec option de recompilation.
La déclaration d'une variable - même une variable de table (c'est-à-dire @table_variable
) - ne peut évidemment déclencher aucun de ces événements, car déclarer une variable ne compte pas comme DDL . Une variable (même une variable de table) est un objet temporaire utilisé exclusivement pour votre programmation T-SQL. C'est pourquoi les variables de table ne reçoivent aucune statistique et ne sont pas liées par des transactions . La déclaration d'une variable (table ou non) ne peut pas déclencher une recompilation proc.
La création d'une table temporaire (ie #temp_table
) ou d'un index, cependant, est DDL qui affecte la définition physique de la base de données. Les tables temporaires et les index sont des objets "réels" avec des statistiques et un contrôle transactionnel. Par conséquent, leur création peut déclencher l'un des événements 1, 2 ou 5 de la liste ci-dessus et ainsi déclencher une recompilation de proc.