Dinamik Sorgularda Exec’mi sp_ExecuteSql’mi Kullanmalı
SQL Server‘da her t-sql sorgusu çalıştırıldığında database engine Cache‘de saklanan bir Query Plan oluşturur. Stored procedure kullanımında Query Plan bir kez oluşturulur ve stored procedure her çalıştırıldığında daha önce oluşturulan Query Plan kullanılır.
Query Plan oluşturulma işlemi maliyetli olduğu için tekrar tekrar Query Plan oluşması performans açısından olumsuz yönde etki edecektir.
Bazı durumlarda Stored Procedure içinde Dinamik Sql oluşturmamız gerekebiliyor. Dinamik olarak oluşturduğumuz sorguyu çalıştırmak için iki farklı komutumuz vardır.
exec ve sp_executesql
Exec : Dinamik olarak oluşturduğumuz sorgu için daha önce oluşan Query Planı kullanmak yerine yeni bir Query Plan oluşturur.
Sp_ExecuteSql : Dinamik olarak oluşturduğumuz sorgu için daha önce oluşan Query Planı kullanır. Performans açısından sp_executesql kullanızı tavsiye ederim.