Как я могу удалить префикс dbo из моих имен таблиц, когда я пишу свои операторы sql в SQL Server?
Все таблицы в моей схеме имеют префикс dbo. Теперь в моих инструкциях sql я не люблю все время использовать dbo.tablename. Есть обходные пути или изменения конфигурации?
5 ответов
На самом деле вы должны оставить эти DBO. заявления, потому что ваш SQL будет быстрее, так как оптимизатору не нужно искать схему
Также просмотрите эту ссылку. Влияние процедурных вызовов на производительность без квалификации владельца.
На самом деле выгодно покинуть дбо. префикс на месте - в конце концов, в SQL Server может быть несколько схем ("dbo." thingie) с одним и тем же именем таблицы, например, dbo.MyTable, joe.MyTable, frank.MyTable.
Если вы затем выполните SELECT (список полей) FROM MyTable, SQL Server должен сначала выяснить, какую из таблиц "MyTable" вы действительно имеете в виду -> это стоит времени, сразу указав, что вы хотите "dbo.MyTable" сэкономит вам время.
Хорошо, не много по одному запросу - но запросы SELECT довольно часты, и все это складывается!
Марк
Просто так, если все ваши таблицы находятся в схеме dbo
use mydatabase
go
select * from mytable
если у вас есть несколько баз данных, вы можете сделать это тоже:
select * from mydatabase..mytable
Вопрос о награде не совсем оригинальный вопрос.
Текущие ответы не содержат достаточно деталей.
Ни один из ответов фактически не затрагивает вопрос о том, как удалить префикс dbo или изменить его на что-то другое.
dbo
это схема. Вы не можете удалить схему из таблицы. Вы можете изменить это. Есть много примеров. Вот один из них: Как переместить таблицу в схему в T-SQL.
К сожалению, если вы хотите максимально эффективно использовать Microsoft SQL Server, вам нужно установить dbo.
во многих местах. При создании представления вы можете сделать его представлением с привязкой к схеме, что означает, что имена объектов будут проверяться во время компиляции, и пока существует представление, объекты, на которые оно ссылается, нельзя удалить. (Вам придется сначала явно удалить представление.) Если представление привязано к схеме, оно также может стать индексированным представлением. Новые версии MSSQL также поддерживают привязанные к схеме хранимые процедуры, которые имеют и другие преимущества.
Если вы хотите, вы можете создавать другие схемы помимо dbo
. Но вам все равно нужно явно ссылаться на объекты, так какmyschema.mytable
и не только mytable
.
Вам также понадобится dbo.
для пользовательских функций.
Лично я хотел бы сказать MSSQL, что я не собираюсь использовать схемы, я вполне доволен классическим SQL-способом единого пространства имен верхнего уровня для таблиц (по крайней мере, в данной базе данных), и не могли бы вы просто предполагать dbo.
если не указано иное. Но я не нашел способа.
Я думаю, что пользователь, к которому вы подключаетесь, должен принадлежать схеме dbo, и тогда вам не нужно будет вводить префикс, это будет выводить его из схем, к которым принадлежит пользователь.