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