Saya memiliki dua kueri t-sql menggunakan SqlServer 2005. Bagaimana saya bisa mengukur berapa lama untuk menjalankan masing-masing?
Menggunakan stopwatch saya tidak memotongnya.
performance
sql-server-2005
TheMoot
sumber
sumber
Jawaban:
Salah satu pendekatan sederhana untuk mengukur "waktu yang berlalu" antara peristiwa adalah dengan hanya mengambil tanggal dan waktu saat ini.
Di SQL Server Management Studio
Untuk menghitung waktu yang berlalu, Anda bisa mengambil nilai tanggal itu ke dalam variabel, dan menggunakan fungsi DATEDIFF:
Itu hanya satu pendekatan. Anda juga bisa mendapatkan waktu yang berlalu untuk permintaan menggunakan SQL Profiler.
sumber
SET @t1 = GETDATE();
di bagian atas kueri saya dan kemudian menempelSET @t2 = GETDATE();SELECT 'NOTE 1',DATEDIFF(millisecond,@t1,@t2) AS elapsed_ms;SET @t1 = GETDATE();
pada titik yang bijaksana dalam kueri (mengedit "CATATAN 1" dengan tepat). Memperlakukan pilihan sebagai breakpoint daripada pengukuran secara semantik identik dengan pendekatan Anda (meskipun set terakhir ke @ t1 palsu, dan ini mengasumsikan semua pertanyaan harus diukur). Ini murni optimasi mental / pengetikan (satu tempel per breakpoint, bukan dua pasta per kueri).Jika Anda menginginkan pengukuran yang lebih akurat daripada jawaban di atas:
Hasilnya akan di Pesan jendela .
Pembaruan (2015-07-29):
Dengan permintaan populer, saya telah menulis potongan kode yang dapat Anda gunakan untuk mengatur waktu seluruh prosedur tersimpan, daripada komponennya. Meskipun ini hanya mengembalikan waktu yang diambil oleh putaran terakhir, ada statistik tambahan yang dikembalikan oleh
sys.dm_exec_procedure_stats
yang mungkin juga bernilai:sumber
To use SET STATISTICS TIME, users must have the appropriate permissions to execute the Transact-SQL statement. The SHOWPLAN permission is not required.
dari: technet.microsoft.com/en-us/library/ms190287.aspxAnda juga dapat melihat solusi ini
sumber
Cara lain adalah dengan menggunakan fitur built-in SQL Server bernama
Client Statistics
yang dapat diakses melalui Menu> Query> Include Client Statistics .Anda dapat menjalankan setiap kueri di jendela kueri yang terpisah dan membandingkan hasil yang diberikan di
Client Statistics
tab tepat di sampingMessages
tab.Misalnya dalam gambar di bawah ini menunjukkan bahwa waktu rata-rata yang berlalu untuk mendapatkan balasan server untuk salah satu pertanyaan saya adalah 39 milidetik.
Anda dapat membaca 3 cara untuk mendapatkan waktu eksekusi di sini . Anda bahkan mungkin perlu menampilkan
Estimated Execution Plan
ctrlLpenyelidikan lebih lanjut tentang permintaan Anda.sumber
lebih baik lagi, ini akan mengukur rata-rata n iterasi kueri Anda! Sangat bagus untuk pembacaan yang lebih akurat.
sumber
MICROSECOND
untukMILLISECOND
dan untuk menghapus setiap tembolok saya dimasukkan mengikuti garis antarabegin
dandeclare @t0 ...
:CHECKPOINT; DBCC DROPCLEANBUFFERS; DBCC FREEPROCCACHE;
. Bekerja seperti pesona dan persis apa yang saya cari. +1Klik ikon Statistik untuk menampilkan dan kemudian jalankan kueri untuk mendapatkan timing dan untuk mengetahui seberapa efisien kueri Anda
sumber