Performansta fark yok. Ancak, şu anda şemalar kullanıyorsunuz (bilmeseniz bile).
Şema referansların kullanımı, vb tablolar, saklanan prosedürler, UDF, gibi nesneler değildir şema kalifiye etmez bir performans etkisi vardır. Referanslar her zaman şema tarafından nitelendirilmelidir. Bu niteliksiz referansların çözülmesi gerekir ve bu şu şekilde olur:
- İlk olarak, aynı adı taşıyan bir nesneyi arayın ve kimlik bilgileri altında oturumun oluşturulduğu kullanıcının varsayılan şemasının altına yazın (örn.
jsmith). Eğer bulunursa, o örnek kullanılır.
- Aksi takdirde, şema altında aynı ada ve türe sahip bir nesne arayın
dbo.
Bunun birkaç etkisi vardır:
- Çoğu zaman, referans şema niteliyse gerekli olan tek arama yerine referansı çözmek için iki arama gerekir.
- Sorgu / saklı yordam / kullanıcı tanımlı işlev bağlandığında elde edilen yürütme planı önbelleğe alınamaz ve yeniden kullanılamaz.
Bir şey bozulduğunda yalnızca - acı verici bir şekilde - bulacağınız son etki, farklı kullanıcıların belirli bir sorgudan veya saklı yordamdan farklı sonuçlar alabilmesidir. Böyle bir şey select * from foo join barbenim için db sahibi olarak iyi çalışabilir; jsmithistemeden veya istemeyerek , aynı veritabanında fookendi şeması ( jsmith.foo) altında bir tablo oluşturan kullanıcı için bozuk olabilir .
Bu nedenle de createve dropifadeler yaratılan veya bırakılan nesnenin adını şema nitelemelidir.