SQL Server - Синонимы Советы и подсказки?
Я делал много рефакторинга БД в последнее время, и синонимы стали невероятно полезными. Когда я первоначально ставил синонимы, я думал, что они будут очень временными, пока я реорганизую. Теперь я думаю, что могут быть некоторые веские причины, чтобы сохранить некоторые из этих синонимов.
-
Кто-нибудь использовал их как полный удар
слой абстракции?
-
Каковы затраты на производительность?
-
Любые ошибки с индексами?
-
Советы или рекомендации?
Мой первый вопрос, поэтому, пожалуйста, будьте осторожны.
Спасибо
Ответы
Ответ 1
Поскольку синоним представляет собой абстрагирование/альтернативное имя для уже существующего объекта базы данных, в случае таблицы поведение индекса идентично поведению основного объекта, то есть при создании планов выполнения, тот же план генерируется независимо от используя имя таблицы или соответствующий синоним.
Ответ 2
На самом деле, я столкнулся с gotcha при использовании индексов.... Я не уверен, есть ли способ создать связанные сообщения на этом сайте, но вот ссылка на мою проблему с синонимами и табличными индексами.
Синтаксис таблицы SQL Server с индексами
Ответ 3
Да, синонимы могут использоваться как слой абстракции или слой косвенности. Например, если вам нужно получить доступ к объектам во внешней базе данных, где фактическое имя базы данных не будет известно до времени выполнения. Вы можете написать свой sql, ссылаясь на объекты по имени синонима, а затем динамически создавать синонимы позже.
Нет индексов gotchas: если синоним относится к табличному или индексированному виду, то все индексы, определенные на этих объектах, находятся в игре.
Производительность должна быть такой же, как явно ссылаться на объект по полному имени.