当前位置: 代码迷 >> Informix >> 怎么提高查询效率
  详细解决方案

怎么提高查询效率

热度:1796   发布时间:2013-02-26 00:00:00.0
如何提高查询效率
表架构:
  主表+明细表,明细数据按月存储,即:
  主表:wamia 明细:wamia201001 wamia201002 ……
目标:
  1、根据主表中存储的UID建立游标,分别查询每个UID的明细数据;
  2、明细数据查询要求:1月份查询上年度全年数据,二月份查询1月数据……12月份查询1-11月份数据。
  3、瓶颈:大部分帐号明细数据较均匀(几十-上百条明细),部分帐号明细(几十W - 几百W条),查询某些帐号明细数量count(*)需要10分钟,若分片不均匀,严重影响整体性能。(情形1:其他所有进程执行完毕后退出,剩下一个进程在运行。)
  4、当前查询方法:多进程查询;将要查询的明细表组织为一视图,再查询count(*),根据count(*)查询区间明细数据。
  5、考虑将明细数据插入到临时表(插入过程影响性能);
  count(*)过程按月执行,最后累加(后面查询明细数据性能未改善)。
若能在informix视图上建立索引,性能将大大提升;若将空闲进程查询剩余分片中其他UID信息,能提高整体效率;若多个进程处理一个帐号(不现实:结果排序,count(*)条件...)
  informix版本:Informix Dynamic Server(IDS)11.X

  唉,描述真困难。

------解决方案--------------------------------------------------------
我建议另建个表,主键wamia201001一类的,count。
wamia201001的上加触发器,修改上面的count。
搜索时,直接查这个表。
------解决方案--------------------------------------------------------
换个性能好点的服务器的了。。费这劲干啥呀。哈
  相关解决方案