假设有一个表,其结构如下所示,其中包含大量记录。为了获得更好的性能,我手动执行更新统计信息。我需要知道对复合索引执行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 12.10手册建议:
在表上运行UPDATE STATISTICS MEDIUM后,与仅LOW模式列分布统计信息可用于该表的查询语句相比,查询优化器通常选择更有效的执行计划。列。
对于已经为每列提供MEDIUM模式分布统计信息的索引表,在对作为索引键一部分的每列运行UPDATE STATISTICS HIGH之后,查询优化器通常会选择更有效的执行计划。
因为ip_address
和name
都是唯一索引的一部分(您也应该考虑将其指定为主键),所以第一个选项(单个HIGH模式语句)可能是最合适的。无需先在同一列上运行MEDIUM模式。
测试它-YMMV。