Нет разницы в производительности. Однако вы используете схемы прямо сейчас (даже если вы этого не знаете).
Использование ссылок на объекты схемы, такие как таблицы, хранимые процедуры, пользовательские функции и т. Д., Которые не квалифицированы по схеме , оказывает влияние на производительность. Ссылки всегда должны быть квалифицированы по схеме. Такие неквалифицированные ссылки должны быть разрешены, и это происходит так:
- Сначала ищите объект с тем же именем и типом в схеме по умолчанию пользователя, под чьими учетными данными был установлен сеанс (например,
jsmith
). Если найден, этот экземпляр используется.
- В противном случае ищите объект с тем же именем и типом в схеме
dbo
.
Это имеет несколько эффектов:
- В большинстве случаев для разрешения ссылки требуются два поиска, а не один поиск, если ссылка является квалифицированной по схеме.
- План выполнения, полученный при привязке запроса / хранимой процедуры / пользовательской функции, не может быть кэширован и использован повторно.
Окончательный эффект, который вы обнаружите - только болезненно - когда что-то ломается, - это то, что разные пользователи могут получить разные результаты от данного запроса или хранимой процедуры. Нечто подобное select * from foo join bar
может хорошо работать для меня как владельца БД; он может быть поврежден для пользователя, jsmith
который случайно или нет создал таблицу с именем foo
его собственной схемы ( jsmith.foo
) в той же базе данных.
По этой причине create
и drop
операторы должны указывать в качестве схемы имя создаваемого или удаляемого объекта.