Megosztás a következőn keresztül:


sys.dm_exec_query_stats (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

A gyorsítótárazott lekérdezési tervek összesített teljesítménystatisztikáit adja vissza az SQL Serveren. A nézet lekérdezési utasításonként egy sort tartalmaz a gyorsítótárazott terven belül, és a sorok élettartama magához a tervhez van kötve. Ha egy tervet eltávolít a gyorsítótárból, a megfelelő sorok törlődnek ebből a nézetből.

A sys.dm_exec_query_stats eredményei az egyes végrehajtások függvényében változhatnak, mivel az adatok csak a befejezett lekérdezéseket tükrözik, a még folyamatban lévőket nem.

Ha ezt a DMV-t egy dedikált SQL-készletből szeretné meghívni az Azure Synapse Analytics vagy az Analytics Platform System (PDW) szolgáltatásban, használja a sys.dm_pdw_nodes_exec_query_statsnevet. Kiszolgáló nélküli SQL-készlet esetén használja a sys.dm_exec_query_stats.

Oszlop neve Adattípus Leírás
sql_handle varbinary(64) Egy jogkivonat, amely egyedileg azonosítja a lekérdezés részét képező köteget vagy tárolt eljárást.

sql_handle statement_start_offset és statement_end_offsetegyütt a lekérdezés SQL-szövegének lekérésére használható a sys.dm_exec_sql_text dinamikus felügyeleti függvény meghívásával.
statement_start_offset Bájtban, 0-tól kezdődően jelzi annak a lekérdezésnek a kezdő pozícióját, amelyet a sor a köteg vagy a megőrzött objektum szövegén belül ír le.
statement_end_offset Bájtban 0-tól kezdődően a lekérdezés záró pozícióját jelzi, amelyet a sor a köteg vagy a megőrzött objektum szövegén belül ír le. Az SQL Server 2014 (12.x) előtti verziók esetében a -1 érték jelzi a köteg végét. A záró megjegyzések már nem jelennek meg.
plan_generation_num bigint Sorozatszám, amely az újrafordítás utáni tervek példányainak megkülönböztetésére használható.
plan_handle varbinary(64) Egy jogkivonat, amely egyedileg azonosítja a végrehajtott köteg lekérdezés-végrehajtási tervét, és a csomagja a terv gyorsítótárában található, vagy éppen fut. Ez az érték átadható a sys.dm_exec_query_plan dinamikus felügyeleti függvénynek a lekérdezésterv beszerzéséhez.

Mindig 0x000, ha egy natívan lefordított tárolt eljárás lekérdez egy memóriaoptimalizált táblát.
creation_time datetime A terv fordításának időpontja. Az idő az aktuális időzónábanvan rögzítve.
last_execution_time datetime A terv végrehajtásának utolsó időpontja. Az idő az aktuális időzónábanvan rögzítve.
execution_count bigint A terv végrehajtásának száma a legutóbbi fordítás óta.
total_worker_time bigint A mikroszekundumokban (de csak ezredmásodpercekben) jelentett processzoridő teljes mennyisége, amelyet a terv végrehajtása felhasznált a fordítás óta.

Natívan lefordított tárolt eljárások esetén előfordulhat, hogy total_worker_time nem pontosak, ha sok végrehajtás kevesebb, mint 1 ezredmásodpercet vesz igénybe.
last_worker_time bigint A mikroszekundumokban (de csak ezredmásodpercekben) jelentett cpu-idő, amelyet a terv legutóbbi végrehajtásakor felhasználtak. 1
min_worker_time bigint A minimális cpu-idő, mikroszekundumban (de csak ezredmásodpercben) jelentve, amelyet ez a terv valaha is felhasznált egyetlen végrehajtás során. 1
max_worker_time bigint A maximális cpu-idő, mikroszekundumban (de csak ezredmásodpercben) jelentve, amelyet ez a terv valaha is felhasznált egyetlen végrehajtás során. 1
total_physical_reads bigint A terv végrehajtásával végrehajtott fizikai olvasások teljes száma a fordítás óta.

Memóriaoptimalizált tábla lekérdezésekor mindig 0.
last_physical_reads bigint A terv legutóbbi végrehajtásakor végrehajtott fizikai olvasások száma.

Memóriaoptimalizált tábla lekérdezésekor mindig 0.
min_physical_reads bigint A terv által egyetlen végrehajtás során valaha végrehajtott fizikai olvasások minimális száma.

Memóriaoptimalizált tábla lekérdezésekor mindig 0.
max_physical_reads bigint A terv által egyetlen végrehajtás során valaha végrehajtott fizikai olvasások maximális száma.

Memóriaoptimalizált tábla lekérdezésekor mindig 0.
total_logical_writes bigint A terv végrehajtásával végrehajtott logikai írások teljes száma a fordítás óta.

Memóriaoptimalizált tábla lekérdezésekor mindig 0.
last_logical_writes bigint A pufferkészlet azon lapjainak száma, amelyek a terv legutóbbi végrehajtása során elszennyeződtek.

A lap olvasása után a lap csak az első módosításkor lesz piszkos. Ha egy oldal koszossá válik, ez a szám növekszik. A már piszkos lapok későbbi módosításai nem befolyásolják ezt a számot.
Ez a szám mindig 0 egy memóriaoptimalizált tábla lekérdezésekor.
min_logical_writes bigint Azoknak a logikai írásoknak a minimális száma, amelyeket ez a terv valaha is végrehajtott egyetlen végrehajtás során.

Memóriaoptimalizált tábla lekérdezésekor mindig 0.
max_logical_writes bigint Azoknak a logikai írásoknak a maximális száma, amelyeket ez a terv valaha is végrehajtott egyetlen végrehajtás során.

Memóriaoptimalizált tábla lekérdezésekor mindig 0.
total_logical_reads bigint A terv végrehajtásával végrehajtott logikai olvasások teljes száma a fordítás óta.

Memóriaoptimalizált tábla lekérdezésekor mindig 0.
last_logical_reads bigint A terv legutóbbi végrehajtásakor végrehajtott logikai olvasások száma.

Memóriaoptimalizált tábla lekérdezésekor mindig 0.
min_logical_reads bigint Azoknak a logikai olvasásoknak a minimális száma, amelyeket ez a terv valaha is végrehajtott egyetlen végrehajtás során.

Memóriaoptimalizált tábla lekérdezésekor mindig 0.
max_logical_reads bigint Azoknak a logikai olvasásoknak a maximális száma, amelyeket ez a terv valaha is végrehajtott egyetlen végrehajtás során.

Memóriaoptimalizált tábla lekérdezésekor mindig 0.
total_clr_time bigint A Microsoft .NET Framework közös nyelvi futtatókörnyezeti (CLR) objektumaiban felhasznált idő, amely mikroszekundumokban (de csak ezredmásodpercekben) jelent meg, a terv fordítása óta végrehajtott végrehajtásával. A CLR-objektumok tárolhatók eljárások, függvények, triggerek, típusok és összesítések.
last_clr_time bigint A .NET-keretrendszer CLR-objektumaiban a terv legutóbbi végrehajtása során a végrehajtás által felhasznált mikroszekundumokban (de csak ezredmásodpercekben) jelentett idő. A CLR-objektumok tárolhatók eljárások, függvények, triggerek, típusok és összesítések.
min_clr_time bigint A mikroszekundumokban jelentett minimális idő (de ezredmásodpercig pontos), amelyet ez a terv valaha is felhasznált a .NET-keretrendszer CLR-objektumaiban egyetlen végrehajtás során. A CLR-objektumok tárolhatók eljárások, függvények, triggerek, típusok és összesítések.
max_clr_time bigint A mikroszekundumokban jelentett maximális idő (de ezredmásodpercig pontos), amelyet ez a terv valaha is felhasznált a .NET-keretrendszer CLR-ben egyetlen végrehajtás során. A CLR-objektumok tárolhatók eljárások, függvények, triggerek, típusok és összesítések.
total_elapsed_time bigint A terv befejezett végrehajtásához mikroszekundumban (de csak ezredmásodpercben) jelentett teljes idő.
last_elapsed_time bigint Eltelt idő, mikroszekundumban (de csak ezredmásodpercben pontos) jelentve a terv legutóbbi végrehajtásához.
min_elapsed_time bigint Minimális eltelt idő, mikroszekundumban (de csak ezredmásodpercben) jelentve a terv befejezett végrehajtásához.
max_elapsed_time bigint Maximális eltelt idő, mikroszekundumban (de csak ezredmásodpercben) jelentve a terv befejezett végrehajtásához.
query_hash Bináris(8) A lekérdezésre kiszámított bináris kivonatérték hasonló logikájú lekérdezések azonosítására szolgál. A lekérdezés kivonatával meghatározhatja a csak literális értékektől eltérő lekérdezések összesített erőforrás-használatát.
query_plan_hash bináris(8) A lekérdezés végrehajtási tervében kiszámított bináris kivonatérték, amely hasonló lekérdezés-végrehajtási tervek azonosítására szolgál. A lekérdezésterv kivonatával megkeresheti a hasonló végrehajtási tervekkel rendelkező lekérdezések összesített költségét.

Mindig 0x000, ha egy natívan lefordított tárolt eljárás lekérdez egy memóriaoptimalizált táblát.
total_rows bigint A lekérdezés által visszaadott sorok teljes száma. Nem lehet null értékű.

Mindig 0, ha egy natívan lefordított tárolt eljárás lekérdez egy memóriaoptimalizált táblát.
last_rows bigint A lekérdezés utolsó végrehajtása által visszaadott sorok száma. Nem lehet null értékű.

Mindig 0, ha egy natívan lefordított tárolt eljárás lekérdez egy memóriaoptimalizált táblát.
min_rows bigint A lekérdezés által egy végrehajtás során visszaadott sorok minimális száma. Nem lehet null értékű.

Mindig 0, ha egy natívan lefordított tárolt eljárás lekérdez egy memóriaoptimalizált táblát.
max_rows bigint A lekérdezés által visszaadott sorok maximális száma egyetlen végrehajtás során. Nem lehet null értékű.

Mindig 0, ha egy natívan lefordított tárolt eljárás lekérdez egy memóriaoptimalizált táblát.
statement_sql_handle varbinary(64) A: SQL Server 2014 (12.x) és újabb verziókra vonatkozik.

A nem NULL értékekkel csak akkor töltődik fel, ha a Lekérdezéstár be van kapcsolva, és összegyűjti az adott lekérdezés statisztikáit.
statement_context_id bigint A: SQL Server 2014 (12.x) és újabb verziókra vonatkozik.

A nem NULL értékekkel csak akkor töltődik fel, ha a Lekérdezéstár be van kapcsolva, és összegyűjti az adott lekérdezés statisztikáit.
total_dop bigint A terv fordítása óta használt párhuzamosság teljes összege. Mindig 0 egy memóriaoptimalizált tábla lekérdezéséhez.

A: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.
last_dop bigint A párhuzamosság mértéke a terv legutóbbi végrehajtásakor. Mindig 0 egy memóriaoptimalizált tábla lekérdezéséhez.

A: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.
min_dop bigint Az a minimális párhuzamosság, amelyet ez a terv valaha is használt egy végrehajtás során. Mindig 0 egy memóriaoptimalizált tábla lekérdezéséhez.

A: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.
max_dop bigint A terv maximális párhuzamossági foka egy végrehajtás során. Mindig 0 egy memóriaoptimalizált tábla lekérdezéséhez.

A: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.
total_grant_kb bigint A csomag fordítása óta kapott fenntartott memória-támogatás teljes mennyisége a KB-ban. Mindig 0 egy memóriaoptimalizált tábla lekérdezéséhez.

A: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.
last_grant_kb bigint A fenntartott memória megadásának mennyisége a KB-ban, amikor a terv legutóbb végre volt hajtva. Mindig 0 egy memóriaoptimalizált tábla lekérdezéséhez.

A: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.
min_grant_kb bigint A terv által egy végrehajtás során valaha kapott fenntartott memória minimális mennyisége a KB-ban. Mindig 0 egy memóriaoptimalizált tábla lekérdezéséhez.

A: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.
max_grant_kb bigint A terv által egy végrehajtás során valaha kapott fenntartott memória maximális mennyisége a KB-ban. Mindig 0 egy memóriaoptimalizált tábla lekérdezéséhez.

A: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.
total_used_grant_kb bigint A csomag fordítása óta használt fenntartott memória teljes mennyisége a KB-ban. Mindig 0 egy memóriaoptimalizált tábla lekérdezéséhez.

A: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.
last_used_grant_kb bigint A felhasznált memóriahasználat mennyisége a KB-ban, amikor a terv legutóbb végrehajtotta. Mindig 0 egy memóriaoptimalizált tábla lekérdezéséhez.

A: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.
min_used_grant_kb bigint Az a minimális memóriahasználati támogatás a KB-ban, amelyet ez a terv valaha is használt egy végrehajtás során. Mindig 0 egy memóriaoptimalizált tábla lekérdezéséhez.

A: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.
max_used_grant_kb bigint A terv által egy végrehajtás során valaha felhasznált memória maximális mennyisége a KB-ban. Mindig 0 egy memóriaoptimalizált tábla lekérdezéséhez.

A: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.
total_ideal_grant_kb bigint A terv összeállítása óta becsült ideális memóriahasználat teljes mennyisége a KB-ban. Mindig 0 egy memóriaoptimalizált tábla lekérdezéséhez.

A: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.
last_ideal_grant_kb bigint Az ideális memóriakiadás mennyisége kb-ban a terv legutóbbi végrehajtásakor. Mindig 0 egy memóriaoptimalizált tábla lekérdezéséhez.

A: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.
min_ideal_grant_kb bigint Az ideális memóriahasználat minimális mennyisége a tervben, amely egy végrehajtás során valaha becsült kb. Mindig 0 egy memóriaoptimalizált tábla lekérdezéséhez.

A: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.
max_ideal_grant_kb bigint Az ideális memóriahasználat maximális mennyisége a tervben, amely egy végrehajtás során valaha becsült kb. Mindig 0 egy memóriaoptimalizált tábla lekérdezéséhez.

A: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.
total_reserved_threads bigint A terv által a fordítás óta használt fenntartott párhuzamos szálak teljes összege. Mindig 0 egy memóriaoptimalizált tábla lekérdezéséhez.

A: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.
last_reserved_threads bigint A fenntartott párhuzamos szálak száma a terv legutóbbi végrehajtásakor. Mindig 0 egy memóriaoptimalizált tábla lekérdezéséhez.

A: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.
min_reserved_threads bigint A terv által egy végrehajtás során használt fenntartott párhuzamos szálak minimális száma. Mindig 0 egy memóriaoptimalizált tábla lekérdezéséhez.

A: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.
max_reserved_threads bigint A terv által egy végrehajtás során valaha használt fenntartott párhuzamos szálak maximális száma. Mindig 0 egy memóriaoptimalizált tábla lekérdezéséhez.

A: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.
total_used_threads bigint A terv által a fordítás óta használt párhuzamos szálak teljes összege. Mindig 0 egy memóriaoptimalizált tábla lekérdezéséhez.

A: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.
last_used_threads bigint A használt párhuzamos szálak száma a terv legutóbbi végrehajtásakor. Mindig 0 egy memóriaoptimalizált tábla lekérdezéséhez.

A: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.
min_used_threads bigint A terv által egy végrehajtás során valaha használt párhuzamos szálak minimális száma. Mindig 0 egy memóriaoptimalizált tábla lekérdezéséhez.

A: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.
max_used_threads bigint A terv által egy végrehajtás során valaha használt párhuzamos szálak maximális száma. Mindig 0 egy memóriaoptimalizált tábla lekérdezéséhez.

A: SQL Server 2016 (13.x) és újabb verziókra vonatkozik.
total_columnstore_segment_reads bigint A lekérdezés által beolvasott oszlopcentrikus szegmensek teljes összege. Nem lehet null értékű.

Avonatkozik: AZ SQL Server 2016 (13.x) SP2 és az SQL Server 2017 (14.x) CU3 verziótól kezdve
last_columnstore_segment_reads bigint A lekérdezés utolsó végrehajtása során beolvasott oszlopcentrikus szegmensek száma. Nem lehet null értékű.

Avonatkozik: AZ SQL Server 2016 (13.x) SP2 és az SQL Server 2017 (14.x) CU3 verziótól kezdve
min_columnstore_segment_reads bigint Az oszlopcentrikus szegmensek minimális száma, amelyet a lekérdezés egy végrehajtás során olvas. Nem lehet null értékű.

Avonatkozik: AZ SQL Server 2016 (13.x) SP2 és az SQL Server 2017 (14.x) CU3 verziótól kezdve
max_columnstore_segment_reads bigint Az oszlopcentrikus szegmensek maximális száma, amelyet a lekérdezés egy végrehajtás során olvas. Nem lehet null értékű.

Avonatkozik: AZ SQL Server 2016 (13.x) SP2 és az SQL Server 2017 (14.x) CU3 verziótól kezdve
total_columnstore_segment_skips bigint A lekérdezés által kihagyott oszlopcentrikus szegmensek teljes összege. Nem lehet null értékű.

Avonatkozik: AZ SQL Server 2016 (13.x) SP2 és az SQL Server 2017 (14.x) CU3 verziótól kezdve
last_columnstore_segment_skips bigint A lekérdezés utolsó végrehajtása során kihagyott oszlopcentrikus szegmensek száma. Nem lehet null értékű.

Avonatkozik: AZ SQL Server 2016 (13.x) SP2 és az SQL Server 2017 (14.x) CU3 verziótól kezdve
min_columnstore_segment_skips bigint Azon oszlopcentrikus szegmensek minimális száma, amelyeket a lekérdezés egy végrehajtás során kihagyott. Nem lehet null értékű.

Avonatkozik: AZ SQL Server 2016 (13.x) SP2 és az SQL Server 2017 (14.x) CU3 verziótól kezdve
max_columnstore_segment_skips bigint Az oszlopcentrikus szegmensek maximális száma, amelyet a lekérdezés egy végrehajtás során kihagyott. Nem lehet null értékű.

Avonatkozik: AZ SQL Server 2016 (13.x) SP2 és az SQL Server 2017 (14.x) CU3 verziótól kezdve
total_spills bigint A lekérdezés fordítása óta a lekérdezés végrehajtásával kiömlött lapok teljes száma.

Avonatkozik: AZ SQL Server 2016 (13.x) SP2 és az SQL Server 2017 (14.x) CU3 verziótól kezdve
last_spills bigint A lekérdezés legutóbbi végrehajtásakor kiömlött lapok száma.

Avonatkozik: AZ SQL Server 2016 (13.x) SP2 és az SQL Server 2017 (14.x) CU3 verziótól kezdve
min_spills bigint A lekérdezés által egyetlen végrehajtás során kiömlött lapok minimális száma.

Avonatkozik: AZ SQL Server 2016 (13.x) SP2 és az SQL Server 2017 (14.x) CU3 verziótól kezdve
max_spills bigint A lekérdezés által egyetlen végrehajtás során kiömlött lapok maximális száma.

Avonatkozik: AZ SQL Server 2016 (13.x) SP2 és az SQL Server 2017 (14.x) CU3 verziótól kezdve
pdw_node_id Annak a csomópontnak az azonosítója, amelyen ez a disztribúció található.

A következővonatkozik: Azure Synapse Analytics, Analytics Platform System (PDW)
total_page_server_reads bigint A terv végrehajtásával végrehajtott távolioldal-kiszolgálói olvasások teljes száma a fordítás óta.

A következőkre vonatkozik: Azure SQL Database Rugalmas skálázás
last_page_server_reads bigint A terv legutóbbi végrehajtásakor végrehajtott távolioldal-kiszolgálói olvasások száma.

Az Azure SQL Database rugalmas skálázásának
min_page_server_reads bigint A távolioldal-kiszolgáló minimális száma azt olvassa fel, hogy ez a terv valaha is végrehajtotta egyetlen végrehajtás során.

Az Azure SQL Database rugalmas skálázásának
max_page_server_reads bigint A távoli lapkiszolgálók maximális száma azt olvassa fel, hogy ez a terv valaha is végrehajtott egy végrehajtás során.

Az Azure SQL Database rugalmas skálázásának

Jegyzet

1 A statisztikák gyűjtésének engedélyezésekor natívan lefordított tárolt eljárások esetén a feldolgozói idő ezredmásodpercben lesz összegyűjtve. Ha a lekérdezés kevesebb mint egy ezredmásodpercben fut, az érték 0.

Engedélyek

Az SQL Server 2019 (15.x) és a korábbi verziók, valamint a felügyelt Azure SQL-példány VIEW SERVER STATE engedélyt igényelnek.

Az SQL Server 2022 (16.x) és újabb verziói VIEW SERVER PERFORMANCE STATE engedélyt igényelnek a kiszolgálón.

Az Azure SQL Database Alapszintű, S0és S1 szolgáltatás célkitűzésein, valamint rugalmas készletekbenlévő adatbázisok esetében a kiszolgálói rendszergazdai fiókra, a Microsoft Entra rendszergazdai fiókra vagy a ##MS_ServerStateReader##kiszolgálói szerepkör tagságára van szükség. Az SQL Database szolgáltatás minden más célkitűzéséhez vagy az adatbázis VIEW DATABASE STATE engedélyére, vagy a ##MS_ServerStateReader## kiszolgálói szerepkör tagságára van szükség.

Megjegyzések

A nézetben lévő statisztikák a lekérdezés befejezésekor frissülnek.

Példák

Egy. A TOP N-lekérdezések megkeresése

Az alábbi példa az átlagos CPU-idő alapján rangsorolt első öt lekérdezés adatait adja vissza. Ez a példa a lekérdezéseket a lekérdezés kivonata alapján összesíti, így a logikailag egyenértékű lekérdezések a kumulatív erőforrás-felhasználásuk szerint vannak csoportosítva. A Sample_Statement_Text oszlopban a lekérdezési kivonatnak megfelelő lekérdezési struktúra látható, de az utasítás adott értékeinek figyelembevételével kell olvasni. Ha például egy utasítás WHERE Id = 5tartalmaz, általánosabb formában is elolvashatja: 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. Lekérdezés sorszám-összesítéseinek visszaadása

Az alábbi példa a lekérdezések sorszámának összesítési adatait (összes sor, minimális sor, maximális sor és utolsó sor) adja vissza.

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;