Perbedaan antara EXEC () dan sp_executesql tanpa parameter?


8

Saya baru saja belajar tentang prosedur tersimpan sp_executesql baru. Saya suka fakta bahwa ada cara untuk mengeksekusi kode parameter dari dalam SQL Server.

Tapi, saya bertanya-tanya apa bedanya antara menggunakan prosedur tersimpan sp_executesql ketika Anda tidak memiliki parameter dibandingkan hanya memanggil EXEC secara langsung. Juga, apakah ada implikasi kinerja?

exec('select * from line_segment')
exec sp_executesql N'select * from line_segment'

Juga, apakah ada perbedaan antara 2005 dan 2008 atau apakah mereka menangani hal yang sama?

Jawaban:


11

sp_executesql mendukung parameterisasi, sedangkan EXEC hanya menerima string.

Hanya perbedaan kinerja yang mungkin timbul karena parameterisasi yaitu panggilan sp_executesql parameterised lebih mungkin untuk memiliki rencana cache yang dapat digunakan kembali. Panggilan EXEC cenderung menyebabkan banyak pemboros ruang sekali pakai dalam cache rencana.


Jadi, ketika sp_executesql dipanggil tanpa parameter, sama efisiennya dengan EXEC?
Richard

Jika keduanya menghasilkan rencana eksekusi yang sama maka ya, kinerjanya harus sama. Anda bisa berpendapat bahwa mengendus parameter dapat menyebabkan masalah dengan sp_executesql tetapi penyebab dan solusi akan sama seperti untuk procs yang disimpan.
Mark Storey-Smith

2

Ini membantu saya untuk memecahkan wawancara itu sebabnya saya memposting untuk membantu seseorang untuk hal yang sama.

masukkan deskripsi gambar di sini

Semoga berhasil!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.