南大通用GBase8s 常用SQL语句(294)

    1. UPDATE STATISTICS 语句

使用 UPDATE STATISTICS 语句来更新系统目录信息,查询优化器用于对本地数据库中对象上的操作。UPDATE STATISTICS 语句是对 SQL 的 ANSI/ISO 标准的扩展。

语法

 

表和列作用域

 

元素

描述

限制

语法

column

表或同义词中的列

必须存在。带有 MEDIUM 或 HIGH 关键字,该列不可为 BYTE、LVARCHAR 或 TEXT 数据类型。

标识符 

owner

表或同义词的所有者

必须是表或同义词的所有者

所有者名称 

synonym 

要更新其统计信息的表的同义词

在当前的数据库中,该同义词以及它指向的表必须存在

标识符 

table 

要为其更新统计信息的表

必须在当前的数据库中存在,或为在当前会话中创建的临时表

标识符 

用法

使用 UPDATE STATISTICS 语句来执行任何下列任务:

  1. 为表和表分片计算列值的分发。
  2. 更新数据库服务器用来优化查询的系统目录表。
  3. 强制重新优化 SPL 例程。
  4. 当您升级数据库服务器时,转换现有的索引。

请在不包含任何其他语句的事务中运行 UPDATE STATISTICS 语句。

如果您未指定表、例程以及 Resolution 子句,则 UPDATE STATISTICS 语句的缺省作用域是当前数据库中所有永久表。(另请参阅主题 UPDATE STATISTICS 的作用域。)

在高可用性集群中的辅助服务器上,不支持 UPDATE STATISTICS 语句。

限制: 在除了当前数据库之外的任何数据库中,您都不可更新表的或 UDR 的查询计划的统计信息。也就是说,当执行 UPDATE STATISTICS 语句时,数据库服务器忽略数据库对象。

UPDATE STATISTICS 的作用域

跟在 FOR TABLE 关键字或 FOR PROCEDURE 关键字之后的任何表、列或 SPL 例程都限制 UPDATE STATISTICS 的作用域。

  • 如果 UPDATE STATISTICS 语句
    • 未包括 Table 和 Column Scope 子句,且
    • 无 Resolution 子句,且
    • 无 FOR FUNCTION 规范,且
    • 无 FOR PROCEDURE 规范,且
    • 无 FOR ROUTINE 规范,且
    • 无 FOR SPECIFIC 规范,

则在缺省情况下,对于当前数据库中的每个永久表,在 LOW 模式下更新列分发统计信息,包括系统目录表。

  • 如果您使用 FOR TABLE 关键字,但未指定表的名称或同义词,则数据库服务器重新计算当前数据中所有表上的分发,以及您的会话中所有临时表上的分发。(然而,UPDATE STATISTICS 对通过 CREATE EXTERNAL TABLE 语句定义的对象不起作用。)
  • 如果您在 FOR TABLE 关键字之后指定表,但没有指定列的列表,则数据库服务器重新计算指定的表的所有列上的统计分发。
  • 如果您包括 FOR PROCEDURE 关键字,但未指定任何 SPL 例程的名称,则数据库服务器重新优化当前数据库中所有 SPL 例程的查询执行计划。

更新表的统计信息

虽然对数据库的更改可能使得 systablessyscolumnssysindicessysfragmentssysdistrib 和 sysfragdist 系统目录表中的信息过时,但在大多数 SQL 语句之后,数据库服务器不自动地更新那些表。

在下列情况下,发出恰当的 UPDATE STATISTICS 语句来确保系统目录表中的列分发信息反映数据库的当前状态:

  1. 您对表执行扩展的修改。
  2. 应用更改列值的分发。

UPDATE STATISTICS 语句刷新数据库服务器用于优化修改了的对象上的查询的数据分发统计信息。

  1. 您以较新的数据库服务器为用户升级数据库。

UPDATE STATISTICS 语句将旧的索引转换为符合较新的数据库服务器索引格式,并隐式地删除旧的索引。

您可逐个表地转换索引,也可一次转换整个数据库的索引。请遵循 GBase 8s 迁移指南 中的转换指南。

如果您的引用导致特定的表中数据的许多修改,则以 UPDATE STATISTICS 常规地为那个表更新系统目录来提升查询效率。术语许多修改是相对于分发的分解。如果数据修改对列值的分发几乎没有影响,则您不需要执行 UPDATE STATISTICS。

NLSCASE INSENSITIVE 数据库中的分发统计信息

在以 NLSCASE INSENSITIVE 属性创建的数据库中,在列和 NCHAR 或 NVARCHAR 数据类型的表达式上的数据库服务器操作,在大写字母与小写字母之间没有区别。在包括相同的字母序列但大小写不同的字符串的数据集中,与包含相同的记录的区分大小写的数据库相比,生成 NCHAR 和 NVARCHAR 列的数据分发需要较少的 bin。数据库服务器仅将所有大小写不同的值标识为单个的不同值,并当它生成该列、索引或分片级统计信息时使用此结果。

要获取更多关于 NLSCASE INSENSITIVE 数据库的信息,请参阅 在 NLSCASE INSENSITIVE 数据库中重复的行、指定 NLSCASE 区分大小写 和 在区分大小写的数据库中的 NCHAR 和 NVARCHAR 表达式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值