2009-04-28 3 views
15

В последнее время я делаю много рефакторинга БД, и синонимы стали невероятно полезными. Когда я первоначально ставил синонимы, я думал, что они будут очень временными, пока я реорганизую. Теперь я думаю, что могут быть некоторые веские причины, чтобы сохранить некоторые из этих синонимов.SQL Server - синонимы Советы и подсказки?

  • Кто-нибудь использовал их как полный удар слой абстракции?

  • Какова стоимость исполнения?

  • Любые ошибки с индексами?

  • Рекомендации или рекомендации?

Мой первый вопрос, поэтому, пожалуйста, будьте осторожны.

Благодаря

ответ

12

Как синоним абстракция/альтернативное название для уже существующего объекта базы данных, в случае таблицы, поведение индекса идентично подстилающего объект, т.е. когда планы выполнения генерируется, то один и тот же план генерируется независимо от использования имени таблицы или соответствующего синонима.

+0

Хорошая работа стив –

+0

мы можем получить список таблиц по quering 'ВЫБРАТЬ TABLE_NAME FROM INFORMATION_SCHEMA.TABLES' Точно так же > Как я могу получить список синонимов, используя запрос ??? – RSK

+0

выберите schema_name (schema_id) + '.' + имя из sys.tables выберите schema_name (schema_id) + '.' + имя, * from sys.procedures выберите schema_name (schema_id) + '.' + имя из sys.views – Sage

3

Да, синонимы могут использоваться в качестве слоя абстракции или слоя косвенности. Например, если вам нужно получить доступ к объектам во внешней базе данных, где фактическое имя базы данных не будет известно до времени выполнения. Вы можете написать свой sql, ссылаясь на объекты по имени синонима, а затем динамически создавать синонимы позже.

Нет индекса gotchas: если синоним относится к таблице или индексированному представлению, тогда любые индексы определены на этих объектах в игре.

Производительность должна быть такой же, как явно ссылаться на объект по полному имени.

5

На самом деле, я столкнулся с gotcha при использовании индексов .... Я не уверен, есть ли способ создать связанные сообщения на этом сайте, но вот ссылка на мою проблему с синонимами и табличными индексами ,

SQL Server Table Synonyms with Indexes