Aucune différence de performance. Cependant, vous utilisez des schémas en ce moment (même si vous ne le connaissez pas).
L'utilisation de références aux schémas d' objets tels que des tables, des procédures stockées, etc., UDFs qui sont non qualifié du schéma n'ont un impact sur les performances. Les références doivent toujours être qualifiées par schéma. Ces références non qualifiées doivent être résolues, et cela se produit comme ceci:
- Tout d'abord, recherchez un objet du même nom et du même type sous le schéma par défaut de l'utilisateur sous les informations d'identification de la session (par exemple
jsmith
). S'il est trouvé, cette instance est utilisée.
- Sinon, recherchez un objet du même nom et tapez sous le schéma
dbo
.
Cela a plusieurs effets:
- La plupart du temps, deux recherches sont nécessaires pour résoudre la référence plutôt que la recherche unique requise si la référence est qualifiée de schéma.
- Le plan d'exécution obtenu lorsque la requête / procédure stockée / fonction définie par l'utilisateur est liée ne peut pas être mis en cache et réutilisé.
L'effet final que vous ne constaterez - douloureusement - que lorsque quelque chose se brise est que différents utilisateurs peuvent obtenir des résultats différents à partir d'une requête ou d'une procédure stockée donnée. Quelque chose comme ça select * from foo join bar
peut bien fonctionner pour moi en tant que propriétaire de la base de données; il peut être rompu pour l'utilisateur jsmith
qui, par inadvertance ou non, a créé une table nommée foo
sous son propre schéma ( jsmith.foo
) dans la même base de données.
Pour cette raison aussi, create
et les drop
déclarations devraient schéma qualifier le nom de l'objet créé ou supprimé.