如何提高查询效率
表架构:
主表+明细表,明细数据按月存储,即:
主表: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。
搜索时,直接查这个表。
[解决办法]
换个性能好点的服务器的了。。费这劲干啥呀。哈