您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

sp_cmp_all_qplans

语法


sp_cmp_all_qplans <group1>, <group2>[, <mode>]

参数

<group1>, <group2>

是两个抽象计划组的名称。

<mode>

是显示选项。各种模式及其报告的信息:

counts – 缺省模式,此选项报告符合下列条件的计划:

相同

具有相同的关联键,但属于不同的组

只存在于某个组中

brief – 计数提供的信息,以及:

各组中计划不同但关联键相同的抽象计划的 ID

只存在于某个组中的计划的 ID。

same – 所有计数以及查询和计划匹配的所有抽象计划的 ID、查询和计划。

diff – 所有计数以及查询和计划不同的所有抽象计划的 ID、查询和计划。

first – 所有计数以及在第一个计划组中但不在第二个计划组中的所有抽象计划的 ID、查询和计划。

second – 所有计数以及在第二个计划组中但不在第一个计划组中的所有抽象计划的 ID、查询和计划。

offending – 所有计数以及关联键不同或不同时存在于两个组中的所有抽象计划的 ID、查询和计划。这是 diff、first 和 second 模式的组合。

full – 所有计数以及所有抽象计划的 ID、查询和计划。这是 same 和 offending 模式的组合。

示例

示例 1

生成两个抽象计划组的缺省报告:


sp_cmp_all_qplans dev_plans, prod_plans

If the two query plans groups are large, this might take some time.
Query plans that are the same
 count
 ----------- 
          49 
Different query plans that have the same association key
 count
 ----------- 
           1 
Query plans present only in group 'dev_plans':
 count
 ----------- 
           1 
Query plans present only in group 'prod_plans':
 count
 ----------- 
           0

示例 2

使用 brief 模式生成报告:


sp_cmp_all_qplans dev_plans, prod_plans, brief

用法

使用 sp_cmp_all_qplans 时,还存在一些其它注意事项:

  • 使用 sp_cmp_all_qplans 检查两个计划组中抽象计划的差异。

  • sp_cmp_all_qplans 匹配每个组中具有相同用户 ID 和查询文本的计划对。计划按如下原则归类:

    a 相同的计划

    b 在两个组中具有相同关联键但具有不同抽象计划的计划。关联键是组 ID、用户 ID 和查询文本。

    c 只存在于一个组中的计划

  • 若要比较两个单独的抽象计划,请使用 sp_cmp_qplans。若要查看抽象计划组的名称,请使用 sp_help_qpgroup。

  • 当系统管理员或数据库所有者运行 sp_cmp_all_qplans 时,它将报告两个组中的所有计划。当另一个用户执行 sp_cmp_all_qplans 时,它只报告具有该用户的 ID 的计划。