sys.dm_exec_query_stats (Transact-SQL)
Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen Örneği
SQL Server'da önbelleğe alınmış sorgu planları için toplam performans istatistiklerini döndürür. Görünüm, önbelleğe alınmış plan içindeki sorgu deyimi başına bir satır içerir ve satırların ömrü planın kendisine bağlıdır. Önbellekten bir plan kaldırıldığında, ilgili satırlar bu görünümden kaldırılır.
sys.dm_exec_query_stats
sonuçları her yürütmeye göre farklılık gösterebilir; veriler yalnızca tamamlanmış sorguları yansıtır ve hala devam eden sorguları yansıtmaz.
Bu DMV'yi Azure Synapse Analytics veya Analytics Platform Sistemi'ndeki (PDW) ayrılmış bir SQL havuzundan çağırmak için sys.dm_pdw_nodes_exec_query_stats
adını kullanın. Sunucusuz SQL havuzu için sys.dm_exec_query_stats
kullanın.
Sütun adı | Veri tipi | Açıklama |
---|---|---|
sql_handle |
varbinary(64) | Sorgunun parçası olduğu toplu işlemi veya saklı yordamı benzersiz olarak tanımlayan belirteç.sql_handle , statement_start_offset ve statement_end_offset ile birlikte, sys.dm_exec_sql_text dinamik yönetim işlevi çağrılarak sorgunun SQL metnini almak için kullanılabilir. |
statement_start_offset |
int | 0 ile başlayan bayt cinsinden, satırın toplu iş veya kalıcı nesnesinin metni içinde tanımladığı sorgunun başlangıç konumunu gösterir. |
statement_end_offset |
int | 0 ile başlayan bayt cinsinden, satırın toplu iş veya kalıcı nesnesinin metni içinde tanımladığı sorgunun bitiş konumunu gösterir. SQL Server 2014 (12.x) öncesi sürümler için -1 değeri toplu işlemin sonunu gösterir. Sondaki açıklamalar artık dahil değildir. |
plan_generation_num |
bigint | Yeniden derlemeden sonra plan örneklerini ayırt etmek için kullanılabilecek bir sıra numarası. |
plan_handle |
varbinary(64) | Yürütülen ve planı plan önbelleğinde bulunan veya şu anda yürütülmekte olan bir toplu iş için sorgu yürütme planını benzersiz olarak tanımlayan belirteç. Bu değer, sorgu planını almak için sys.dm_exec_query_plan dinamik yönetim işlevine geçirilebilir. Yerel olarak derlenmiş saklı yordam bellek için iyileştirilmiş bir tabloyu sorguladığında her zaman 0x000 . |
creation_time |
datetime |
Planın derlendiği zaman. Saat, geçerli saat dilimikaydedilir. |
last_execution_time |
datetime |
Planın yürütmeye başladığı son zaman. Saat, geçerli saat dilimikaydedilir. |
execution_count |
bigint | Planın en son derlendiğinden bu yana kaç kez yürütüldüğünü gösterir. |
total_worker_time |
bigint | Derlendiğinden beri bu planın yürütmeleri tarafından tüketilen, mikrosaniye cinsinden bildirilen toplam CPU süresi (ancak yalnızca milisaniye cinsinden doğru). Yerel olarak derlenmiş saklı yordamlar için, birçok yürütme 1 milisaniyeden kısa sürerse total_worker_time doğru olmayabilir. |
last_worker_time |
bigint | Planın en son yürütülürken tüketildiği mikrosaniye cinsinden (ancak yalnızca milisaniye cinsinden doğru) CPU süresi. 1 |
min_worker_time |
bigint | Bu planın tek bir yürütme sırasında tüketildiği mikrosaniye cinsinden (ancak yalnızca milisaniyeye doğru) bildirilen en düşük CPU süresi. 1 |
max_worker_time |
bigint | Bu planın tek bir yürütme sırasında tüketildiği mikrosaniye cinsinden (ancak yalnızca milisaniyeye doğru) bildirilen maksimum CPU süresi. 1 |
total_physical_reads |
bigint | Bu planın derlendiğinden bu yana gerçekleştirilen toplam fiziksel okuma sayısı. Bellek için iyileştirilmiş bir tabloyu sorgularken her zaman 0 . |
last_physical_reads |
bigint | Plan en son yürütülürken gerçekleştirilen fiziksel okuma sayısı. Bellek için iyileştirilmiş bir tabloyu sorgularken her zaman 0 . |
min_physical_reads |
bigint | Bu planın tek bir yürütme sırasında gerçekleştirdiği en az fiziksel okuma sayısı. Bellek için iyileştirilmiş bir tabloyu sorgularken her zaman 0 . |
max_physical_reads |
bigint | Bu planın tek bir yürütme sırasında gerçekleştirdiği en fazla fiziksel okuma sayısı. Bellek için iyileştirilmiş bir tabloyu sorgularken her zaman 0 . |
total_logical_writes |
bigint | Bu planın derlendiğinden bu yana gerçekleştirilen toplam mantıksal yazma sayısı. Bellek için iyileştirilmiş bir tabloyu sorgularken her zaman 0 . |
last_logical_writes |
bigint | Planın en son tamamlanan yürütülmesi sırasında kirlenen arabellek havuzu sayfalarının sayısı. Sayfa okunduktan sonra, sayfa yalnızca ilk değiştirildiğinde kirlenir. Sayfa kirlendiğinde, bu sayı artırılır. Zaten kirli olan bir sayfada yapılan sonraki değişiklikler bu sayıyı etkilemez. Bellek için iyileştirilmiş bir tablo sorgulandığında bu sayı her zaman 0 . |
min_logical_writes |
bigint | Bu planın tek bir yürütme sırasında gerçekleştirdiği en düşük mantıksal yazma sayısı. Bellek için iyileştirilmiş bir tabloyu sorgularken her zaman 0 . |
max_logical_writes |
bigint | Bu planın tek bir yürütme sırasında gerçekleştirdiği en fazla mantıksal yazma sayısı. Bellek için iyileştirilmiş bir tabloyu sorgularken her zaman 0 . |
total_logical_reads |
bigint | Bu planın derlendiğinden bu yana gerçekleştirilen toplam mantıksal okuma sayısı. Bellek için iyileştirilmiş bir tabloyu sorgularken her zaman 0 . |
last_logical_reads |
bigint | Plan en son yürütülürken gerçekleştirilen mantıksal okuma sayısı. Bellek için iyileştirilmiş bir tabloyu sorgularken her zaman 0 . |
min_logical_reads |
bigint | Bu planın tek bir yürütme sırasında gerçekleştirdiği en az mantıksal okuma sayısı. Bellek için iyileştirilmiş bir tabloyu sorgularken her zaman 0 . |
max_logical_reads |
bigint | Bu planın tek bir yürütme sırasında gerçekleştirdiği en fazla mantıksal okuma sayısı. Bellek için iyileştirilmiş bir tabloyu sorgularken her zaman 0 . |
total_clr_time |
bigint | Derlendiğinden beri bu planın yürütülmesiyle Microsoft .NET Framework ortak dil çalışma zamanı (CLR) nesnelerinin içinde tüketilen, mikrosaniye cinsinden (ancak yalnızca milisaniyeye doğru) bildirilen süre. CLR nesneleri saklı yordamlar, işlevler, tetikleyiciler, türler ve toplamalar olabilir. |
last_clr_time |
bigint | Bu planın son yürütülmesi sırasında .NET Framework CLR nesneleri içinde yürütülerek tüketilen mikrosaniye cinsinden (ancak yalnızca milisaniyeye doğru) bildirilen süre. CLR nesneleri saklı yordamlar, işlevler, tetikleyiciler, türler ve toplamalar olabilir. |
min_clr_time |
bigint | Bu planın tek bir yürütme sırasında .NET Framework CLR nesnelerinin içinde tüketildiği mikrosaniye cinsinden (ancak yalnızca milisaniyeye doğru) bildirilen minimum süre. CLR nesneleri saklı yordamlar, işlevler, tetikleyiciler, türler ve toplamalar olabilir. |
max_clr_time |
bigint | Bu planın tek bir yürütme sırasında .NET Framework CLR içinde tüketildiği mikrosaniye cinsinden (ancak yalnızca milisaniyeye doğru) bildirilen maksimum süre. CLR nesneleri saklı yordamlar, işlevler, tetikleyiciler, türler ve toplamalar olabilir. |
total_elapsed_time |
bigint | Bu planın tamamlanmış yürütmeleri için mikrosaniye cinsinden (ancak yalnızca milisaniyeye doğru) bildirilen toplam geçen süre. |
last_elapsed_time |
bigint | Bu planın en son tamamlanan yürütülmesi için mikrosaniye cinsinden (ancak yalnızca milisaniyeye doğru) bildirilen geçen süre. |
min_elapsed_time |
bigint | Bu planın tamamlanmış herhangi bir yürütmesi için mikrosaniye cinsinden (ancak yalnızca milisaniyeye doğru) bildirilen minimum geçen süre. |
max_elapsed_time |
bigint | Bu planın tamamlanmış bir şekilde yürütülmesi için mikrosaniye cinsinden (ancak yalnızca milisaniyeye doğru) bildirilen en uzun süre. |
query_hash |
İkili (8) | Sorguda hesaplanan ve benzer mantığa sahip sorguları tanımlamak için kullanılan ikili karma değeri. Sorgu karması kullanarak yalnızca değişmez değerlerle farklılık gösteren sorguların toplam kaynak kullanımını belirleyebilirsiniz. |
query_plan_hash |
ikili (8) | Sorgu yürütme planında hesaplanan ve benzer sorgu yürütme planlarını tanımlamak için kullanılan ikili karma değer. Benzer yürütme planlarına sahip sorguların toplu maliyetini bulmak için sorgu planı karması kullanabilirsiniz. Yerel olarak derlenmiş saklı yordam bellek için iyileştirilmiş bir tabloyu sorguladığında her zaman 0x000 . |
total_rows |
bigint | Sorgu tarafından döndürülen toplam satır sayısı. Null olamaz. Yerel olarak derlenmiş saklı yordam bellek için iyileştirilmiş bir tabloyu sorguladığında her zaman 0 . |
last_rows |
bigint | Sorgunun son yürütmesi tarafından döndürülen satır sayısı. Null olamaz. Yerel olarak derlenmiş saklı yordam bellek için iyileştirilmiş bir tabloyu sorguladığında her zaman 0 . |
min_rows |
bigint | Bir yürütme sırasında sorgu tarafından döndürülen en az satır sayısı. Null olamaz. Yerel olarak derlenmiş saklı yordam bellek için iyileştirilmiş bir tabloyu sorguladığında her zaman 0 . |
max_rows |
bigint | Bir yürütme sırasında sorgu tarafından döndürülen en fazla satır sayısı. Null olamaz. Yerel olarak derlenmiş saklı yordam bellek için iyileştirilmiş bir tabloyu sorguladığında her zaman 0 . |
statement_sql_handle |
varbinary(64) |
için geçerlidir: SQL Server 2014 (12.x) ve sonraki sürümler. Null olmayan değerlerle doldurulması için Sorgu Deposu'un açık olması ve söz konusu sorgunun istatistiklerini toplaması gerekir. |
statement_context_id |
bigint |
için geçerlidir: SQL Server 2014 (12.x) ve sonraki sürümler. Null olmayan değerlerle doldurulması için Sorgu Deposu'un açık olması ve söz konusu sorgunun istatistiklerini toplaması gerekir. |
total_dop |
bigint | Bu planın derlendiğinden beri kullandığı paralellik derecesinin toplam toplamı. Bellek için iyileştirilmiş bir tabloyu sorgulamak için her zaman 0 .için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler. |
last_dop |
bigint | Bu plan son kez yürütülürken paralellik derecesi. Bellek için iyileştirilmiş bir tabloyu sorgulamak için her zaman 0 .için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler. |
min_dop |
bigint | Bu planın bir yürütme sırasında kullandığı en düşük paralellik derecesi. Bellek için iyileştirilmiş bir tabloyu sorgulamak için her zaman 0 .için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler. |
max_dop |
bigint | Bu planın bir yürütme sırasında kullandığı en yüksek paralellik derecesi. Bellek için iyileştirilmiş bir tabloyu sorgulamak için her zaman 0 .için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler. |
total_grant_kb |
bigint | Bu plan derlendiğinden bu yana alınan KB cinsinden toplam ayrılmış bellek verme miktarı. Bellek için iyileştirilmiş bir tabloyu sorgulamak için her zaman 0 .için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler. |
last_grant_kb |
bigint | Bu plan son kez yürütülürken KB cinsinden ayrılmış bellek verme miktarı. Bellek için iyileştirilmiş bir tabloyu sorgulamak için her zaman 0 .için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler. |
min_grant_kb |
bigint | Bu planın bir yürütme sırasında aldığı kb cinsinden ayrılmış bellek miktarı en düşük. Bellek için iyileştirilmiş bir tabloyu sorgulamak için her zaman 0 .için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler. |
max_grant_kb |
bigint | Bu planın tek bir yürütme sırasında aldığı kb cinsinden ayrılmış bellek miktarı üst sınırı. Bellek için iyileştirilmiş bir tabloyu sorgulamak için her zaman 0 .için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler. |
total_used_grant_kb |
bigint | Bu plan derlendiğinden bu yana kullanılan KB cinsinden toplam ayrılmış bellek izni miktarı. Bellek için iyileştirilmiş bir tabloyu sorgulamak için her zaman 0 .için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler. |
last_used_grant_kb |
bigint | Bu plan son kez yürütülürken KB cinsinden kullanılan bellek verme miktarı. Bellek için iyileştirilmiş bir tabloyu sorgulamak için her zaman 0 .için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler. |
min_used_grant_kb |
bigint | Bir yürütme sırasında bu plan için kb cinsinden kullanılan en düşük bellek miktarı. Bellek için iyileştirilmiş bir tabloyu sorgulamak için her zaman 0 .için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler. |
max_used_grant_kb |
bigint | Bir yürütme sırasında bu plan için kb cinsinden en fazla kullanılan bellek miktarı. Bellek için iyileştirilmiş bir tabloyu sorgulamak için her zaman 0 .için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler. |
total_ideal_grant_kb |
bigint | Bu plan derlendiğinden bu yana tahmini OLARAK KB cinsinden toplam ideal bellek miktarı. Bellek için iyileştirilmiş bir tabloyu sorgulamak için her zaman 0 .için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler. |
last_ideal_grant_kb |
bigint | Bu plan son kez yürütülürken KB cinsinden ideal bellek verme miktarı. Bellek için iyileştirilmiş bir tabloyu sorgulamak için her zaman 0 .için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler. |
min_ideal_grant_kb |
bigint | Bu planın bir yürütme sırasında tahmin edilen KB cinsinden en düşük ideal bellek miktarı. Bellek için iyileştirilmiş bir tabloyu sorgulamak için her zaman 0 .için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler. |
max_ideal_grant_kb |
bigint | Bu planın bir yürütme sırasında tahmin edilen KB cinsinden en yüksek ideal bellek miktarı. Bellek için iyileştirilmiş bir tabloyu sorgulamak için her zaman 0 .için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler. |
total_reserved_threads |
bigint | Bu planın derlendiğinden beri kullandığı ayrılmış paralel iş parçacıklarının toplam toplamı. Bellek için iyileştirilmiş bir tabloyu sorgulamak için her zaman 0 .için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler. |
last_reserved_threads |
bigint | Bu plan son kez yürütülürken ayrılmış paralel iş parçacıklarının sayısı. Bellek için iyileştirilmiş bir tabloyu sorgulamak için her zaman 0 .için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler. |
min_reserved_threads |
bigint | Bu planın bir yürütme sırasında kullandığı en az ayrılmış paralel iş parçacığı sayısı. Bellek için iyileştirilmiş bir tabloyu sorgulamak için her zaman 0 .için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler. |
max_reserved_threads |
bigint | Bu planın bir yürütme sırasında şimdiye kadar kullandığı ayrılmış paralel iş parçacığı sayısı üst sınırı. Bellek için iyileştirilmiş bir tabloyu sorgulamak için her zaman 0 .için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler. |
total_used_threads |
bigint | Bu plan derlendiğinden beri kullanılan paralel iş parçacıklarının toplam toplamı. Bellek için iyileştirilmiş bir tabloyu sorgulamak için her zaman 0 .için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler. |
last_used_threads |
bigint | Bu plan son kez yürütülürken kullanılan paralel iş parçacıklarının sayısı. Bellek için iyileştirilmiş bir tabloyu sorgulamak için her zaman 0 .için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler. |
min_used_threads |
bigint | Bu planın bir yürütme sırasında kullandığı en az kullanılan paralel iş parçacığı sayısı. Bellek için iyileştirilmiş bir tabloyu sorgulamak için her zaman 0 .için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler. |
max_used_threads |
bigint | Bu planın bir yürütme sırasında şimdiye kadar kullanılan en fazla paralel iş parçacığı sayısı. Bellek için iyileştirilmiş bir tabloyu sorgulamak için her zaman 0 .için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler. |
total_columnstore_segment_reads |
bigint | Sorgu tarafından okunan columnstore segmentlerinin toplam toplamı. Null olamaz. için geçerlidir: SQL Server 2016 (13.x) SP2 ve SQL Server 2017 (14.x) CU3 ile başlayarak |
last_columnstore_segment_reads |
bigint | Sorgunun son yürütmesi tarafından okunan columnstore segmentlerinin sayısı. Null olamaz. için geçerlidir: SQL Server 2016 (13.x) SP2 ve SQL Server 2017 (14.x) CU3 ile başlayarak |
min_columnstore_segment_reads |
bigint | Bir yürütme sırasında sorgu tarafından okunan en az columnstore segmenti sayısı. Null olamaz. için geçerlidir: SQL Server 2016 (13.x) SP2 ve SQL Server 2017 (14.x) CU3 ile başlayarak |
max_columnstore_segment_reads |
bigint | Bir yürütme sırasında sorgu tarafından okunan en fazla columnstore segment sayısı. Null olamaz. için geçerlidir: SQL Server 2016 (13.x) SP2 ve SQL Server 2017 (14.x) CU3 ile başlayarak |
total_columnstore_segment_skips |
bigint | Sorgu tarafından atlanan columnstore segmentlerinin toplam toplamı. Null olamaz. için geçerlidir: SQL Server 2016 (13.x) SP2 ve SQL Server 2017 (14.x) CU3 ile başlayarak |
last_columnstore_segment_skips |
bigint | Sorgunun son yürütülmesiyle atlanan columnstore segmentlerinin sayısı. Null olamaz. için geçerlidir: SQL Server 2016 (13.x) SP2 ve SQL Server 2017 (14.x) CU3 ile başlayarak |
min_columnstore_segment_skips |
bigint | Bir yürütme sırasında sorgu tarafından atlanan en az columnstore segmenti sayısı. Null olamaz. için geçerlidir: SQL Server 2016 (13.x) SP2 ve SQL Server 2017 (14.x) CU3 ile başlayarak |
max_columnstore_segment_skips |
bigint | Bir yürütme sırasında sorgu tarafından atlanan en fazla columnstore segment sayısı. Null olamaz. için geçerlidir: SQL Server 2016 (13.x) SP2 ve SQL Server 2017 (14.x) CU3 ile başlayarak |
total_spills |
bigint | Bu sorgu derlendiğinden bu yana yürütülerek dökülen toplam sayfa sayısı. için geçerlidir: SQL Server 2016 (13.x) SP2 ve SQL Server 2017 (14.x) CU3 ile başlayarak |
last_spills |
bigint | Sorgunun son yürütüldüğü zaman dökülen sayfa sayısı. için geçerlidir: SQL Server 2016 (13.x) SP2 ve SQL Server 2017 (14.x) CU3 ile başlayarak |
min_spills |
bigint | Bu sorgunun tek bir yürütme sırasında taşan en az sayfa sayısı. için geçerlidir: SQL Server 2016 (13.x) SP2 ve SQL Server 2017 (14.x) CU3 ile başlayarak |
max_spills |
bigint | Bu sorgunun tek bir yürütme sırasında taşan en fazla sayfa sayısı. için geçerlidir: SQL Server 2016 (13.x) SP2 ve SQL Server 2017 (14.x) CU3 ile başlayarak |
pdw_node_id |
int | Bu dağıtımın üzerinde olduğu düğümün tanımlayıcısı. için geçerlidir: Azure Synapse Analytics, Analiz Platformu Sistemi (PDW) |
total_page_server_reads |
bigint | Bu planın derlendiğinden bu yana gerçekleştirilen yürütmeleri tarafından gerçekleştirilen uzak sayfa sunucusu okumalarının toplam sayısı. Şunlar için geçerlidir: Azure SQL Veritabanı Hiper Ölçeğini |
last_page_server_reads |
bigint | Plan en son yürütülürken gerçekleştirilen uzak sayfa sunucusu okuma sayısı. Şunlar için geçerlidir: Azure SQL Veritabanı Hiper Ölçeğini |
min_page_server_reads |
bigint | Bu planın tek bir yürütme sırasında gerçekleştirdiği en az uzak sayfa sunucusu okuma sayısı. Şunlar için geçerlidir: Azure SQL Veritabanı Hiper Ölçeğini |
max_page_server_reads |
bigint | Bu planın tek bir yürütme sırasında gerçekleştirdiği en fazla uzak sayfa sunucusu okuma sayısı. Şunlar için geçerlidir: Azure SQL Veritabanı Hiper Ölçeğini |
Not
1 İstatistik toplama etkinleştirildiğinde yerel olarak derlenmiş saklı yordamlar için çalışan süresi milisaniye cinsinden toplanır. Sorgu bir milisaniyeden kısa bir sürede yürütülürse, değeri 0
olur.
İzinler
SQL Server 2019 (15.x) ve önceki sürümleri ve Azure SQL Yönetilen Örneği, VIEW SERVER STATE
izin gerektirir.
SQL Server 2022 (16.x) ve sonraki sürümleri sunucuda VIEW SERVER PERFORMANCE STATE
izin gerektirir.
Azure SQL Veritabanı VIEW DATABASE STATE
izni veya ##MS_ServerStateReader##
sunucu rolü üyeliği gereklidir.
Açıklamalar
Bir sorgu tamamlandığında görünümdeki istatistikler güncelleştirilir.
Örnekler
A. TOP N sorgularını bulma
Aşağıdaki örnek, ortalama CPU süresine göre sıralanan ilk beş sorgu hakkında bilgi döndürür. Bu örnek sorguları sorgu karmalarına göre toplayarak mantıksal olarak eşdeğer sorguların birikmeli kaynak tüketimine göre gruplandırılmış olmasını sağlar. Sample_Statement_Text sütunu, sorgu karmasıyla eşleşen sorgu yapısının bir örneğini gösterir, ancak deyimindeki belirli değerler dikkate alınmadan okunmalıdır. Örneğin, bir deyim WHERE Id = 5
içeriyorsa, bunu daha genel bir biçimde okuyabilirsiniz: WHERE Id = @some_value
.
SELECT TOP 5
query_stats.query_hash AS Query_Hash,
SUM(query_stats.total_worker_time) / SUM(query_stats.execution_count) AS Avg_CPU_Time,
MIN(query_stats.statement_text) AS Sample_Statement_Text
FROM (
SELECT QS.*,
SUBSTRING(ST.text, (QS.statement_start_offset / 2) + 1, (
(
CASE statement_end_offset
WHEN - 1
THEN DATALENGTH(ST.text)
ELSE QS.statement_end_offset
END - QS.statement_start_offset
) / 2
) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS QS
CROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) AS ST
) AS query_stats
GROUP BY query_stats.query_hash
ORDER BY 2 DESC;
B. Sorgu için satır sayısı toplamlarını döndürme
Aşağıdaki örnek sorgular için satır sayısı toplama bilgilerini (toplam satır sayısı, en küçük satırlar, en yüksek satırlar ve son satırlar) döndürür.
SELECT qs.execution_count,
SUBSTRING(qt.text, qs.statement_start_offset / 2 + 1, (
CASE
WHEN qs.statement_end_offset = - 1
THEN LEN(CONVERT(NVARCHAR(max), qt.text)) * 2
ELSE qs.statement_end_offset
END - qs.statement_start_offset
) / 2) AS query_text,
qt.dbid,
dbname = DB_NAME(qt.dbid),
qt.objectid,
qs.total_rows,
qs.last_rows,
qs.min_rows,
qs.max_rows
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
WHERE qt.text LIKE '%SELECT%'
ORDER BY qs.execution_count DESC;