Saya memperbaiki masalah kinerja pada prosedur tersimpan multistatement di SQL Server. Saya ingin tahu bagian mana yang harus saya habiskan.
Saya mengerti dari Bagaimana saya membaca Biaya Permintaan, dan apakah selalu berupa persentase? bahwa bahkan ketika SSMS diberitahu untuk menyertakan Rencana Eksekusi Aktual , angka "Biaya kueri (relatif terhadap bets)" masih didasarkan pada perkiraan biaya , yang mungkin jauh dari aktual
Saya mengerti dari Mengukur Kinerja Kueri: "Biaya Permintaan Rencana Eksekusi" vs "Waktu Diambil" bahwa saya dapat mengelilingi permohonan prosedur tersimpan dengan SET STATISTICS TIMEpernyataan, dan kemudian saya akan mendapatkan daftar seperti ini di Messagespanel:
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 1 ms.
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 0 ms.
[etc]
SQL Server Execution Times:
CPU time = 187 ms, elapsed time = 206 ms.
dengan satu pesan keluaran untuk setiap pernyataan.
Saya dapat 'dengan mudah' (walaupun tidak dengan mudah) mengaitkan output statistik waktu dengan rencana pelaksanaan pernyataan demi pernyataan di panel rencana Eksekusi, dengan menghitungnya: SQL Server Execution TimesOutput pesan keempat sesuai dengan Query 4di panel rencana Eksekusi, dan seterusnya.
Tetapi apakah ada cara yang lebih baik?
DurationdanCPUlebih aktual daripada perkiraan, ya?