当前位置: 代码迷 >> Informix >> Informix数据库查询优化解决思路
  详细解决方案

Informix数据库查询优化解决思路

热度:4418   发布时间:2013-02-26 00:00:00.0
Informix数据库查询优化
最近发现Informix数据库在跨表查询时较慢,上网查了一下说要定期执行一下update   statistics,以更新系统统计信息,文章说的步骤如下:
(1)针对每张表运行  
Update   Statistics   Medium   for   table   tabname   Distributions   Only  
(2)针对每张表中带索引的第一个字段运行  
Update   Statistics   High   for   table   tabname   (fieldname)  
(3)对某些表中带复合索引的每一个字段运行  
Update   Statistics   Low   for   table   tabname   (fieldname1,fieldname2……)  
而且须序不能弄反。但我想问,是对数据库中的每一张表(系统表、应用表)、每一个首个索引字段、第一个索引字段都执行update   statistics吗?还是只针对系统表systables、sysindexs、syscolumns、sysdistrib四个表更新就可以了。如果是前者的话那就必须编写一个shell了,而且每次有表结构变化时都要更新shell,太麻烦了,有没有简便的方法。请各位高手指教。多谢


------解决方案--------------------------------------------------------
很少听见这种数据库,
先帮你顶下
------解决方案--------------------------------------------------------
你只要直接对那个数据库运行update statistics就可以了,不用考虑太多了,速度也不会太慢。
这个你可以设定一个自动处理,每天晚上运行一次就可以了。
------解决方案--------------------------------------------------------
楼上正确。
当然如果你是一直都这么慢,那就是查询语句的问题了,需要修改where语句了。
------解决方案--------------------------------------------------------
最好的办法就是写shell脚本,不忙的时候自动运行。
------解决方案--------------------------------------------------------
如果你的数据库几百兆直接update statistics可以
如果几十个G呢?
跨表查询可以把数据库强制设成只根据索引优化,好像是OPTMIND就行了
可以不用update statistics了
------解决方案--------------------------------------------------------
写个shell脚本,在crontab服务中定期执行。
------解决方案--------------------------------------------------------
3楼说的有道理,或者是你索引建立的有问题也有可能

5楼的方法应该不行
------解决方案--------------------------------------------------------
在你修改了表结构或者索引,还有就是大量新数据导入之后的时候做Update Statistics比较有用,Update Statistics的目的就是把索引重新对应起来。
对一张表做Update Statistics之后不需要再对其中每个索引单独做了。
------解决方案--------------------------------------------------------
它的意思是主要的系统表和应用表...

当然是对每张表,每个索引都update statistics更好啊,但是显麻烦的话,就直接直接对数据库运行update statistics就可以了. 你可以先试试,慢的话,你再update表和索引. 写个shell啊,你也不会经常更改表结构吧.
  相关解决方案