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

sp_opt_querystats

语法


sp_opt_querystats "<query_text>" | help [, "<diagnostic_options>" | null 
	[, <database_name>] [, <user_name>]]

参数

"<query_text>"

正在分析的查询的文本,用引号引起来。

help

显示 sp_opt_querystats 的语法和用法信息。

<diagnostic_options>

(可选)基于 set 选项的诊断参数。诊断参数和 set 选项为:

  • statio

    set statistics io on

  • stattime

    set statistics time on

  • showplan

    set showplan on

  • missingstats

    set option show_missing_stats long

  • resource

    set statistics resource on

  • switches

    show switches

  • option_show_long

    set option show long

    option_show_long 和 option_show 是互斥的。

  • option_show

    set option show on

  • showdata

    set nodata on

    如果包括 set nodata on,则不会执行 showdata。

  • plancost

    set statistics plancost on

    仅当指定 exec 或 allexec 选项时才可用。

  • exec

    set noexec on

    如果包括 set noexec on,则不会执行 exec。

  • allrows_mix

    set plan optgoal allrows_mix

    allrows_mix、allrows_oltp 和 allrows_dss 是互斥的。

  • allrows_oltp

    set plan optgoal allrows_oltp

  • allrows_dss

    set plan optgoal allrows_dss

  • diagmode

    返回增强的进度信息。

  • all

    启用前七个选项。

    all 和 allexec 无法与其它参数结合使用,而且是互斥的。

  • allexec

    启用前七个选项。

    allexec 选项包括 all 选项。

    null

    sp_opt_querystats 需要用三个参数来指定数据库的名称。如果不需要诊断选项,请为该参数输入 null 值以指定 <database_name> 参数的值。

    <database_name>

    (可选)用于执行查询的数据库的名称。如果正在分析的查询没有完全限定的表,则使用此参数。

    <user_name>

    (可选)在 <database_name> 参数指定的数据库中执行查询的用户的名称。该用户必须已经存在于数据库中,而且执行 sp_opt_querystats 的登录名必须具有在该数据库中执行 setuser 命令的权限。

    示例

    示例 1

    分析 pubs2 数据库的 select 命令:

    
    sp_opt_querystats 'select * from pubs2.dbo.authors'
    

    示例 2

    分析 pubs2 数据库的 select 命令,其中包括基于以下 set 命令的信息:set showplan、set statistics io、set option show、set statistics plancost on:

    
    sp_opt_querystats 'select * from pubs2.dbo.authors',
       'showplan,statio,option_show, plancost'
    

    用法

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

  • 必须包括 exec 命令,sp_opt_querystats 才能执行查询。

  • 要以其他用户身份运行 sp_opt_querystats,请将 setuser 命令包括在 exec immediate 命令或外部查询环境中。

  • 必须包括 showdata 命令,sp_query_stats 才能返回结果集。

  • 发出 set quoted_identifier on 后,可将 sp_opt_querystats 选项用引号引起来。例如:

    
    sp_opt_querystats 'select "col" from "MYTABLE"', 'all','DB' 
    

  • 如果包括多个选项,或者指定关键字 all,则必须用引号将选项列表引起来。

  • 不使用任何选项运行 sp_opt_querystats 与使用 all 选项运行是相同的。