sys.query_store_query_variant (Transact-SQL)

适用于: Microsoft Fabric 中的 SQL Server 2022 (16.x) 及更高版本 Azure SQL 数据库Azure SQL 托管实例SQL 数据库

包含有关原始参数化查询(也称为父查询)、调度程序计划及其子查询变体之间的父子关系的信息。 该目录视图显示与调度器相关的所有查询变体及原始参数化查询。 查询变体与从sys.query_store_query中观察时的值相同query_hash。 当你用 sys.query_store_querysys.query_store_runtime_stats连接sys.query_store_query_variant时,可以获得仅在输入值上有所不同的查询的汇总资源使用统计数据。

列名称 数据类型 描述
query_variant_query_id bigint 主密钥。 参数化敏感查询变体的 ID。
parent_query_id bigint 原始参数化查询的 ID。
dispatcher_plan_id bigint 参数敏感计划优化调度程序计划的 ID。

注解

由于多个查询变体可以关联到一个调度器计划,多个计划属于查询变体,并贡献父查询的整体资源使用统计数据。 查询变体的调度器计划不会在 查询存储 中生成运行时统计数据。 因此,除非你在视图中加入额外的连接sys.query_store_query_variant,否则现有的 查询存储 查询不足以收集整体统计数据。

权限

需要 VIEW DATABASE STATE 权限。

SQL Server 2022 及更高版本的权限

需要在数据库上具有VIEW DATABASE PERFORMANCE STATE权限。

示例

查看查询存储变体信息

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

查看查询存储调度程序和变体信息

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