2010-11-02 3 views
1

Les alias de table sont-ils plus rapides que l'utilisation du nom de table?
Ou cela ne fait-il aucune différence?
Et avez-vous de bons conseils pour utiliser des alias de table? Ou recommande/non-recommandations?Les alias de table sont-ils plus rapides que les noms de tables?

Merci,
Bruno

+2

Ils sont plus rapides à taper :) Je les utilise tout le temps pour cette raison et pour réduire le gonflement du code. – AdaTheDev

Répondre

5

Non, ils ne sont pas.

Le moteur de requête ne les voit même pas (ils n'apparaissent que dans les commentaires du plan).

Lors de l'exécution de la requête, le moteur traite les objets physiques réels (tables, index, etc.), en fonction du plan de requête.

Lorsque la requête dit quelque chose comme ceci:

SELECT * 
FROM mytable t 

, l'optimiseur crée un plan semblable à ceci:

|--Clustered Index Scan(OBJECT:([mydb].[dbo].[mytable].[pk_mytable] AS [t])) 

et le moteur de recherche interprète est comme « trouver la première page du indexez pk_mytable et parcourez la liste chaînée des pages, en retournant tous les enregistrements trouvés, jusqu'à ce qu'il n'y ait plus d'enregistrements ". Sur cette étape, peu importe comment vous avez exactement alias la requête: le moteur traite les objets physiques comme les pages, les pointeurs, etc., pas les choses logiques comme les alias.

+1

+1, une bonne réponse – AdaTheDev

+0

Merci pour votre information! – bruno

1

Ils ne sont pas plus rapides mais facilitent la lecture du code. Et ils sont nécessaires pour certaines choses comme lorsque vous vous joignez à une table plus d'une fois et lorsque vous utilisez une table dérivée. Je trouve que c'est une bonne habitude de toujours utiliser des alias et d'aliaser toutes les colonnes de la sélection afin que le mainteneur n'ait pas à deviner quelle table dans une requête complexe chaque champ est venu six mois plus tard.

Questions connexes