2009-04-28 9 views
15

J'ai fait beaucoup de refactoring DB dernièrement et les synonymes sont devenus incroyablement utiles. Quand j'ai mis les synonymes, je pensais qu'ils seraient très temporaires pendant que je refactorisais. Maintenant, je pense qu'il pourrait y avoir de bonnes raisons de garder certains de ces synonymes.SQL Server - Synonymes Trucs et astuces?

  • Quelqu'un at-il les utilise comme plein fouet couche d'abstraction?

  • Quels sont les coûts de performance?

  • Des pièges avec des index?

  • Trucs ou astuces?

Ma première question, alors s'il vous plaît soyez doux.

Merci

Répondre

12

comme synonyme est une abstraction/nom alternatif pour un objet de base de données déjà existante, dans le cas d'une table, le comportement de l'indice est identique à celle de la-à-dire d'objet sous-jacent lorsque sont générés les plans d'exécution, la le même plan est généré indépendamment de l'utilisation du nom de la table ou du synonyme correspondant.

+0

beau travail steve –

+0

nous pouvons obtenir la liste des tables par quering 'SELECT TABLE_NAME DE INFORMATION_SCHEMA.TABLES' même > Comment puis-je obtenir la liste des synonymes à l'aide de la requête ??? – RSK

+0

select nom_schéma (ID_schéma) + '.' + nom de sys.tables select nom_schéma (ID_schéma) + '.' + nom, * de sys.procedures select nom_schéma (ID_schéma) + '.' + nom de sys.regards – Sage

3

Oui, les synonymes peuvent être utilisés comme couche d'abstraction ou couche d'indirection. Par exemple, si vous devez accéder à des objets dans une base de données externe où le nom de la base de données ne sera pas connu avant l'exécution. Vous pouvez écrire votre sql en vous référant aux objets par nom de synonyme, puis créer dynamiquement les synonymes ultérieurement.

Il n'y a pas d'index gotchas: si le synonyme fait référence à une table ou à une vue indexée, les index définis sur ces objets sont en cours de lecture.

Les performances doivent correspondre à la référence explicite à l'objet par un nom qualifié complet.

5

En fait, je suis tombé sur un getcha lors de l'utilisation des index .... Je ne suis pas sûr qu'il existe un moyen de créer des publications sur ce site, mais voici le lien vers mon problème avec les synonymes et les index .

SQL Server Table Synonyms with Indexes