Ini kurang begitu di SQL Server 2008 dan lebih tinggi, tetapi masih ada. Apa yang terjadi adalah cache rencana eksekusi dan SQL Server dapat melakukan auto-parametrize kueri yang dikirim. Ketika menggunakan prosedur tersimpan (yang tidak memiliki SQL dinamis di dalamnya) kueri sudah diparameterisasi sehingga SQL Server tidak melakukannya t perlu membuat paket untuk setiap permintaan saat dijalankan karena paket sudah tersimpan dalam cache paket.
Dan jangan lupa tentang masalah keamanan (SQL dinamis, izin minimum, dll.) Yang hilang saat menggunakan prosedur tersimpan.
Ketika aplikasi menggunakan SQL dinamis terhadap tabel dasar untuk memilih, menyisipkan, memperbarui dan menghapus data dalam tabel, aplikasi harus memiliki hak untuk semua objek secara langsung. Jadi, jika seseorang menggunakan SQL Injection untuk masuk ke server mereka akan memiliki hak untuk meminta, mengubah atau menghapus semua data dalam tabel tersebut.
Jika Anda menggunakan prosedur tersimpan, mereka hanya memiliki hak untuk menjalankan prosedur tersimpan dengan hanya mengembalikan informasi yang akan dikembalikan oleh prosedur tersimpan. Alih-alih mengeluarkan pernyataan penghapusan cepat dan membuang segalanya, mereka perlu mencari tahu prosedur apa yang dapat digunakan untuk menghapus data, lalu mencari cara menggunakan prosedur untuk melakukannya.
Mengingat bahwa SQL Injection adalah cara termudah untuk masuk ke dalam basis data, ini agak penting.