Tidak ada perbedaan dalam kinerja. Namun, Anda menggunakan skema sekarang (bahkan jika Anda tidak mengetahuinya).
Penggunaan referensi ke objek skema seperti tabel, prosedur tersimpan, UDF, dll. Yang tidak memenuhi syarat skema memang memiliki dampak kinerja. Referensi harus selalu dikualifikasikan berdasarkan skema. Referensi yang tidak memenuhi syarat harus diselesaikan, dan itu terjadi seperti ini:
- Pertama, cari objek dengan nama dan jenis yang sama di bawah skema default pengguna di bawah kredensial sesi yang ditetapkan (misalnya
jsmith
). Jika ditemukan, instance itu digunakan.
- Jika tidak, cari objek dengan nama dan jenis yang sama di bawah skema
dbo
.
Ini memiliki beberapa efek:
- Sebagian besar waktu, dua pencarian diperlukan untuk menyelesaikan referensi daripada pencarian tunggal yang diperlukan jika referensi tersebut memenuhi syarat skema.
- Paket eksekusi diperoleh saat kueri / prosedur tersimpan / fungsi yang ditentukan pengguna terikat tidak bisa di-cache dan digunakan kembali.
Efek terakhir yang hanya akan Anda temukan — menyakitkan — ketika sesuatu rusak adalah bahwa pengguna yang berbeda mungkin mendapatkan hasil yang berbeda dari kueri atau prosedur tersimpan yang diberikan. Sesuatu seperti select * from foo join bar
dapat bekerja dengan baik untuk saya sebagai pemilik db; mungkin rusak untuk pengguna jsmith
yang, secara tidak sengaja atau tidak, membuat tabel bernama di foo
bawah skema sendiri ( jsmith.foo
) di database yang sama.
Untuk alasan ini juga, create
dan drop
pernyataan harus memenuhi syarat skema nama objek yang dibuat atau dijatuhkan.