Немає різниці у продуктивності. Однак ви зараз використовуєте схеми (навіть якщо ви цього не знаєте).
Використання посилань на схеми об'єкти , такі як таблиці, збережені процедури, призначені для користувача функції і т.д., які НЕ схеми кваліфікованих дійсно має вплив на продуктивність. Посилання завжди повинні кваліфікуватися за схемою. Такі некваліфіковані посилання мають бути вирішені, і це відбувається так:
- По-перше, шукайте однойменний об’єкт та тип за схемою за замовчуванням у користувача, під обліковими записами якого встановлено сеанс (наприклад
jsmith
). Якщо його знайдено, використовується цей екземпляр.
- В іншому випадку шукайте однойменний об’єкт та тип за схемою
dbo
.
Це має кілька наслідків:
- Більшу частину часу потрібні два пошуку, щоб вирішити посилання, а не один пошук, необхідний, якщо посилання має схему.
- План виконання, отриманий під час прив'язки запиту / збереженої процедури / визначеної користувачем функції, не може кешуватися та використовувати повторно.
Остаточний ефект, який ви виявите - болісно - коли щось порушиться, полягає в тому, що різні користувачі можуть отримати різні результати від заданого запиту або збереженої процедури. Щось подібне select * from foo join bar
може спрацювати нормально для мене як власника db; це може бути зламано для користувача, jsmith
який ненавмисно чи ні, створив таблицю, названу foo
за його власною схемою ( jsmith.foo
) у тій самій базі даних.
З цієї причини також create
і drop
заяви повинні схематично визначати ім'я створюваного або відкинутого об'єкта.