Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Mengeksekusi proc yang tersimpan dari DotNet membutuhkan waktu sangat lama tetapi di SSMS itu langsung

Karena komentar saya tampaknya memberikan jawaban yang benar, saya memutuskan untuk mengubahnya menjadi jawaban lengkap untuk anak cucu dalam semangat stackoverflow.

Masalah Anda tampaknya disebabkan oleh Parameter Sniffing" dari SQL Server .Untuk mencegahnya, cukup tetapkan nilai parameter masuk Anda ke variabel lain yang dideklarasikan tepat di bagian atas SP Anda.

Lihat Artikel bagus tentang ini

Contoh:

CREATE PROCEDURE dbo.MyProcedure
(
    @Param1 INT
)
AS

declare @MyParam1 INT
set @MyParam1 = @Param1

SELECT * FROM dbo.MyTable WHERE ColumnName = @MyParam1 

GO

Saya menyalin informasi ini dari eggheadcafe.com .

Sunting:Sesuai komentar Johann Strydom, berikut adalah opsi lain:Mengoptimalkan Kueri Berbasis Parameter dengan SQL Server OPTIMIZE FOR Hint .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memperkenalkan Platform SaaS Pertama di Dunia untuk Memberikan Diagnostik Mendalam untuk Lingkungan SQL Server Hibrida

  2. Mengapa SQL Server menggunakan pemindaian indeks alih-alih pencarian indeks ketika klausa WHERE berisi nilai parameter?

  3. Kapan saya harus menggunakan variabel tabel vs tabel sementara di server sql?

  4. Periksa Status Semua Pesan Database Database di SQL Server (T-SQL)

  5. Cara Mengubah Tingkat Kompatibilitas Database dengan T-SQL