SQL Server - Синонимы Советы и подсказки?

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

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

  • Каковы затраты на производительность?

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

  • Советы или рекомендации?

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

Спасибо

Ответы

Ответ 1

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

Ответ 2

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

Синтаксис таблицы SQL Server с индексами

Ответ 3

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

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

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