sys.query_store_query_variant (Transact-SQL)

Si applica a: SQL Server 2022 (16.x) e versioni successive del databaseSQL di Azure Istanza gestita di SQL di Azurein Microsoft Fabric

Contiene informazioni sulle relazioni padre-figlio tra le query con parametri originali (note anche come query padre), i piani dispatcher e le relative varianti di query figlio. Questa vista catalogo mostra tutte le varianti di query associate a un dispatcher e le query parametrizzate originali. Le varianti di query condividono lo stesso query_hash valore di quello visualizzato da sys.query_store_query. Quando si unisce sys.query_store_query_variant con sys.query_store_query e sys.query_store_runtime_stats, si possono ottenere statistiche aggregate sull'uso delle risorse per query che differiscono solo per i loro valori di input.

Nome colonna Tipo di dati Descrizione
query_variant_query_id bigint Chiave primaria. ID della variante di query sensibile con parametri.
parent_query_id bigint ID della query con parametri originale.
dispatcher_plan_id bigint ID del piano dispatcher di ottimizzazione del piano sensibile ai parametri.

Osservazioni:

Poiché più di una variante di query può essere associata a un singolo piano dispatcher, più piani appartengono alle varianti di query e contribuiscono alle statistiche complessive di utilizzo delle risorse della query genitore. Il piano dispatcher per le varianti di query non produce statistiche di runtime nel Query Store. Di conseguenza, le query esistenti del Query Store non sono sufficienti per raccogliere statistiche complessive a meno che non si includa una join extra alla sys.query_store_query_variant vista.

Autorizzazioni

Richiede l'autorizzazione VIEW DATABASE STATE.

Autorizzazioni per SQL Server 2022 e versioni successive

È richiesta l'autorizzazione VIEW DATABASE PERFORMANCE STATE per il database.

Esempi

Visualizzare le informazioni sulle varianti di Query Store

SELECT 
    qspl.plan_type_desc AS query_plan_type, 
    qspl.plan_id as query_store_planid, 
    qspl.query_id as query_store_queryid, 
    qsqv.query_variant_query_id as query_store_variant_queryid,
    qsqv.parent_query_id as query_store_parent_queryid,
    qsqv.dispatcher_plan_id as query_store_dispatcher_planid,
    OBJECT_NAME(qsq.object_id) as module_name, 
    qsq.query_hash, 
    qsqtxt.query_sql_text,
    convert(xml,qspl.query_plan)as show_plan_xml,
    qsrs.last_execution_time as last_execution_time,
    qsrs.count_executions AS number_of_executions,
    qsq.count_compiles AS number_of_compiles 
FROM sys.query_store_runtime_stats AS qsrs
    JOIN sys.query_store_plan AS qspl 
        ON qsrs.plan_id = qspl.plan_id 
    JOIN sys.query_store_query_variant qsqv 
        ON qspl.query_id = qsqv.query_variant_query_id
    JOIN sys.query_store_query as qsq
        ON qsqv.parent_query_id = qsq.query_id
    JOIN sys.query_store_query_text AS qsqtxt  
        ON qsq.query_text_id = qsqtxt .query_text_id  
ORDER BY qspl.query_id, qsrs.last_execution_time;
GO

Visualizzare le informazioni sul dispatcher e sulle varianti di Query Store

SELECT
    qspl.plan_type_desc AS query_plan_type, 
    qspl.plan_id as query_store_planid, 
    qspl.query_id as query_store_queryid, 
    qsqv.query_variant_query_id as query_store_variant_queryid,
    qsqv.parent_query_id as query_store_parent_queryid, 
    qsqv.dispatcher_plan_id as query_store_dispatcher_planid,
    qsq.query_hash, 
    qsqtxt.query_sql_text, 
    CONVERT(xml,qspl.query_plan)as show_plan_xml,
    qsq.count_compiles AS number_of_compiles,
    qsrs.last_execution_time as last_execution_time,
    qsrs.count_executions AS number_of_executions
FROM sys.query_store_query qsq
    LEFT JOIN sys.query_store_query_text qsqtxt
        ON qsq.query_text_id = qsqtxt.query_text_id
    LEFT JOIN sys.query_store_plan qspl
        ON qsq.query_id = qspl.query_id
    LEFT JOIN sys.query_store_query_variant qsqv
        ON qsq.query_id = qsqv.query_variant_query_id
    LEFT JOIN sys.query_store_runtime_stats qsrs
        ON qspl.plan_id = qsrs.plan_id
    LEFT JOIN sys.query_store_runtime_stats_interval qsrsi
        ON qsrs.runtime_stats_interval_id = qsrsi.runtime_stats_interval_id
WHERE qspl.plan_type = 1 or qspl.plan_type = 2
ORDER BY qspl.query_id, qsrs.last_execution_time;
GO