Masalah:
Pertanyaan yang mengembalikan data dengan cepat dalam SQL Server Management Studio (SSMS) mengambil banyak masa apabila dijalankan daripada C# aplikasi.
Kod:
Kod C# menggunakan SqlDataAdapter dan kaedah Isiannya untuk melaksanakan pertanyaan.
using (var conn = new SqlConnection(...)) using (var ada = new SqlDataAdapter(...)) { ada.Fill(Logs); }
Pertanyaan SSMS ialah sama dengan yang dilaksanakan dalam aplikasi.
Punca:
Percanggahan dalam masa pelaksanaan disebabkan oleh perbezaan dalam cara parameter dikendalikan dalam aplikasi dan SSMS. Dalam aplikasi, kaedah AddWithValue digunakan untuk menambah parameter jenis NVARCHAR, manakala dalam SSMS, parameter diisytiharkan sebagai VARCHAR.
Penyelesaian:
Untuk menyelesaikan isu ini, sama ada:
ada.SelectCommand.Parameters.Add("@clientID", SqlDbType.Varchar, 200);
where client_id = cast(@clientID as varchar(200))
Penyelesaian pertama diutamakan kerana ia juga menangani cache yang berpotensi isu pencemaran.
Tambahan Pertimbangan:
Atas ialah kandungan terperinci Mengapa Pertanyaan SQL saya Pantas dalam SSMS tetapi Lambat dalam Aplikasi C# saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!