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 TIME
pernyataan, dan kemudian saya akan mendapatkan daftar seperti ini di Messages
panel:
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 Times
Output pesan keempat sesuai dengan Query 4
di panel rencana Eksekusi, dan seterusnya.
Tetapi apakah ada cara yang lebih baik?
Duration
danCPU
lebih aktual daripada perkiraan, ya?