如何为具有复合索引的informix表手动运行更新统计信息?

问题描述 投票:1回答:1

假设有一个表,其结构如下所示,其中包含大量记录。为了获得更好的性能,我手动执行更新统计信息。我需要知道对复合索引执行update statistics命令的正确方法是什么。我应该根据情况使用中高水平?

create table "informix".table1
  (
    ip_address char(15),
    mobile_no char(10),
    name char(20)
  ) in dbs1 extent size 64 next size 32 lock mode row;



create unique index "informix".idx_table1_1 on "informix".table1
    (ip_address,name) using btree  in idxdbs;

对于上表,从以下两种方法中更新统计信息的最佳方法是?

update statistics high for table table1(ip_address,name) force;

OR

update statistics medium for table table1(name) force;
update statistics high for table table1(ip_address) force;
informix
1个回答
0
投票

Informix 12.10手册建议:

  • Using the MEDIUM mode option

    在表上运行UPDATE STATISTICS MEDIUM后,与仅LOW模式列分布统计信息可用于该表的查询语句相比,查询优化器通常选择更有效的执行计划。列。

  • Using the HIGH mode option

    对于已经为每列提供MEDIUM模式分布统计信息的索引表,在对作为索引键一部分的每列运行UPDATE STATISTICS HIGH之后,查询优化器通常会选择更有效的执行计划。

因为ip_addressname都是唯一索引的一部分(您也应该考虑将其指定为主键),所以第一个选项(单个HIGH模式语句)可能是最合适的。无需先在同一列上运行MEDIUM模式。

测试它-YMMV。

© www.soinside.com 2019 - 2024. All rights reserved.