1

在 MSDN 库或 Technet 网站中,Microsoft 倾向于使用伪语法来解释如何将 T-SQL 语句与所有可用选项一起使用。以下是从UPDATE STATISTICS的 Technet 页面获取的示例:

UPDATE STATISTICS table_or_indexed_view_name 
    [ 
        { 
            { index_or_statistics__name }
          | ( { index_or_statistics_name } [ ,...n ] ) 
                }
    ] 
    [    WITH 
        [ 
            FULLSCAN 
            | SAMPLE number { PERCENT | ROWS } 
            | RESAMPLE 
            | <update_stats_stream_option> [ ,...n ]
        ] 
        [ [ , ] [ ALL | COLUMNS | INDEX ] 
        [ [ , ] NORECOMPUTE ] 
    ] ;

<update_stats_stream_option> ::=
    [ STATS_STREAM = stats_stream ]
    [ ROWCOUNT = numeric_constant ]
    [ PAGECOUNT = numeric_contant ]

如何正确阅读此类描述并快速找出所需内容、可选内容以及编写查询的简洁方式?

4

2 回答 2

3

方括号之间的任何东西[...]都是可选的

任何由管道符号分隔的东西|都是一个或另一个选项。

在上面的示例中,您可以将其读作

 UPDATE STATISTICS table_or_indexed_view_name 
 [ optionally specify an index as well]
 [ optionally specify options using **WITH**

      If you use WITH then you can follow it with one of the following keywords
      FULLSCAN 
        OR SAMPLE number { PERCENT | ROWS } 
        OR RESAMPLE 
 ].. and so on
于 2013-09-27T08:24:12.570 回答
3

你应该参考这个Transact-SQL Syntax Conventions

那篇文章中的第一个表格几乎解释了所有内容。

在您的示例中,我们可以看到以下内容:

UPDATE STATISTICS table_or_indexed_view_name 

UPDATE STATISTICS 是使用的关键字 table_or_indexed_view_name 是要更新统计信息的表或视图的名称

[ 
    { 
        { index_or_statistics__name }
      | ( { index_or_statistics_name } [ ,...n ] ) 
            }
] 

这是可选[]的,但如果提供,您必须输入一个统计名称{index_or_statistics__name},或|一个用逗号分隔的统计名称列表{ index_or_statistics_name } [ ,...n ]

[    WITH 
    [ 
        FULLSCAN 
        | SAMPLE number { PERCENT | ROWS } 
        | RESAMPLE 
        | <update_stats_stream_option> [ ,...n ]
    ] 
    [ [ , ] [ ALL | COLUMNS | INDEX ] 
    [ [ , ] NORECOMPUTE ] 
] ;

这也是可选的[]。如果使用,则必须以 a 开头,WITH并且有 4 个选项可供选择。你的选择是

  1. FULLSCAN
  2. SAMPLE number { PERCENT | ROWS }, 您必须在其中定义number并且您必须选择PERCENT| ROWS
  3. RESAMPLE
  4. ` [ ,...n ]' 这是一个用逗号分隔的列表

然后您必须选择其中一个ALLCOLUMNS或者INDEX如果您使用过 ,请用逗号主持WITH

最后NORECOMPUTE,如果您在它之前使用了任何其他选项,则您可以使用另一个选项并在它之前放置一个逗号。

<update_stats_stream_option> ::=
[ STATS_STREAM = stats_stream ]
[ ROWCOUNT = numeric_constant ]
[ PAGECOUNT = numeric_contant ]

这些是您可以使用的预定义选项列表<update_stats_stream_option>(在 4 中)。

于 2013-09-27T08:19:53.657 回答