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 bardapat bekerja dengan baik untuk saya sebagai pemilik db; mungkin rusak untuk pengguna jsmithyang, secara tidak sengaja atau tidak, membuat tabel bernama di foobawah skema sendiri ( jsmith.foo) di database yang sama.
Untuk alasan ini juga, createdan droppernyataan harus memenuhi syarat skema nama objek yang dibuat atau dijatuhkan.