informix 中的 update statistics

IDS 中的 update statistics[@more@]

执行 update statistics 命令,就可以使系统表 systables 、 sysdistrib 、 syscolumns 、 sysindexes等表内的信息得到更新

1、syscolumns:
描述了数据库内的每个字段,其中的colmin、colmax存储了数据库各表字段的次小及次大值,这些值只有在该字段是索引且运行了Update statistics之后才生效。如对于字段值1、2、3、4、5,则4为次大值,2为次小值

2、sysdistrib:
存储了数据分布信息。该表内提供了详细的表字段的信息用于提供给优化器优化SQL Select语句的执行。当执行update statistics medium(high)之后将往此表存入信息。
执行 dbschema -hd 可以得到指定表或字段的分布信息
dbschema -hd student -d edu;

3、sysindexes:
描述了数据库内的索引信息。对于数据库内的每个索引对应一条记录。修改索引之后只有执行Update statistics才能使其改变在该表内得到反映。同时也更新clust的数值,在该表的数据页数目及数据库记录条数之间

4、systables:
通过执行Update statistics可以更新nrows数据
以上参考:http://www.chinaunix.net/jh/20/361314.html
例如:
UPDATE STATISTICS FOR TABLE (sales_rep);
UPDATE STATISTICS FOR TABLE orders (order_num, customer_num, ship_date);
默认为 LOW
for table 后省略表名,则对当前数据库的所有表和当前 session 的所有临时表统计
for table 表名后省略字段名,则对该表的所有列进行统计
如省略 for table 则更新当前数据库中的所有表(包含系统表)以及SPL例程的统计信息

当以任何方式执行 UPDATE STATISTICS 数据库服务器都将读完索引页,并计算查询优化器的统计信息以及定位删除标记为1的页

一、LOW 不产生分发信息
(分发信息位于 sysdistrib )
UPDATE STATISTICS LOW FOR TABLE customer (customer_num);
更新 systables 中的表、行、页的统计信息。为指定列更新 syscolumns 和 sysindexes 中索引和列统计信息(仅当指定的列上有索引时,syscolumns 的 colmax 和 colmin 的值才会更新)


UPDATE STATISTICS LOW FOR TABLE customer (customer_num) DROP DISTRIBUTIONS;
更新统计信息同时删除 customer_num 列上的分发数据

UPDATE STATISTICS LOW FOR TABLE customer (customer_num) DROP DISTRIBUTIONS ONLY;
不更新统计信息,只删除 customer_num 列上的分发数据,仅更新 systables 的 表 customer 的 version 信息

二、MEDIUM 可产生指定列的分发信息(放入 sysdistrib )
对表进行至少一次的扫描
格式:[SAMPLING SIZE 样本最小的大小N ] RESOLUTION 每个二进制文件包含数据行的百分比 [置信级别] [DISTRIBUTIONS ONLY]
MEDIUM 根据采样大小进行统计
A:SAMPLING SIZE 可以决定样本大小。这个值越大越准确。
B:每个二进制文件包含数据行的百分比 [置信级别] 也可以决定样本大小。每个二进制文件包含数据行的百分比( 0.005 到 10,默认2.5),这个值越小越准确;置信级别(0.8 到 0.99,默认0.95)这个值越大越准确。
当A、B都指定时,则样本大小比较 A、B中最大的还大
[DISTRIBUTIONS ONLY]:不检查索引数据


UPDATE STATISTICS MEDIUM FOR TABLE orders RESOLUTION 4 0.90 DISTRIBUTIONS ONLY;
有100/4=25个二进制文件,每个二进制文件包含4%的信息


三、HIGH 同 MEDIUM
采样行的百分比默认为0.5:把指明列的值分成 100/0.5=200 个间隔进行采样

格式:RESOLUTION 每个二进制文件包含数据行的百分比 [DISTRIBUTIONS ONLY]
[DISTRIBUTIONS ONLY]:不检查索引数据

http://www.chinaunix.net/jh/20/361314.html 中有以下建议
考虑到速度性能因素,执行update statistics的推荐方法:
对表执行:update statistics medium for table #### distributions only
对每个索引的首字段执行:update statistics high
对复合索引执行:update statistics low
必要时对非索引字段但在条件中使用到的字段执行Update statistics high操作[/size]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22565551/viewspace-1028608/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22565551/viewspace-1028608/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值