- 论坛徽章:
- 1
|
请教UPDATE的问题,大侠帮忙!
原帖由 "jack707" 发表:
谢谢蓝色键盘,实际应用中的效果谈谈好吗?就是用update statistics,
或用update statistics high分别对应哪些情况会比较好? 1、update的结果事实上最终放在如下这些系统表中:
systables、syscolumns、sysdistrib、sysprocplan、sysindexes等,你可以察看这些信息。查询优化器是通过这些表中的信息确定使用哪个策略(查询路径)来取得where字句中指定的数据查询成本。
2、一般来说,重新装载数据或者对数据库表进行了大量的更新操作后,需要找个时间做update,否则性能会很低。
3、update最好定期做,如果能腾出时间的话。
4、对于一些数据量很庞大并且操作频繁的表,最好每天都做,并且指定参数resolution为1.0 0.99这样效果会好一些。事实上这么做等于在where字句中大大的缩小了搜索范围。
5、对于头索引字段执行high,可以不带参数,对于复合索引做mediun或low就足够了。
6、在执行所有update之前,最好首先执行distributions only字句建立列的分布,这样informix便知道了列中数值存放的范围。
7、在增加或者修改了index后,需要做update。可以专门针对更改了得index做high。
8、存储过程中得表发生变化的时候,需要做对应表的update。
9、数据库做了升级后,需要做update。
10、总结以上的信息,执行update的较好的步骤如下:
update statistics low;
update statistics high for table testtb(头索引);
update statistics high;
update statistics medium distributions only;
update statistics low for table(复合索引);
update statistics high for table(小表) |
|