当前位置:主页>仓库管理软件> 列表

关于多表查询的速度问题,求个算法!

销售管理软件版1楼: 有48个表。而这48个表中字段都是一样的。这48个表中的记录总和会达到几百万条以上。
现在我要查询一条记录。而又不知道这条记录是属于哪个表的。请问怎么做才能让它查询得最快。
求个最快的算法,请高手指点,谢谢啦!

2楼: 顶 如物业管理软件下载

3楼: 不要一次查,循环逐个表查,查到就退出循环

4楼: 对,饭前饭后老兄说的对,用简单的问题可以解决的问题,没必要考虑什么算法。

5楼: 确实如此:

也可以通过查询条件预测记录所属表

6楼: 不好意思,可能我没有说清楚,楼上几位大大都误会我的意思了,我的意思是根据一定的条件,从48个表中查询出一条或多条记录来,而这些记录具体在那个表是不知道的。

注意:我是要查询出这些记录来,而不是查询这些记录在那个表。

因为记录量很大(几百万以上),查询消耗的时间比较长,所以想求个算法,再请各位高手指点指点。谢谢!

销售管理软件版7楼: 在用Union将多查询的结果组合为单个结果集
语法
{ < query specification > | ( < query expression > ) }
UNION [ ALL ]
< query specification | ( < query expression > )


[ UNION [ ALL ] < query specification | ( < query expression > )
[ ...n ] ]

8楼: TO:SPC_CLL
我用过你这方法,500W的数据量要等半天啊,有没有更快点的方法呢?谢谢

9楼: 建index

10楼: 问题还没解决,顶上去

11楼: 我们原来试过一种笨办法,也许可以解决你的问题:
第一、将经常被查询的字段建成索引;
第二、建立存储过程:输入查询的条件,返回临时结果集;
第三、在存储过程中建立临时表;
第四、关闭日志,将符合条件的记录复制到临时表中(分别调用insert from),然后重新 打开日志;
第五、存储过程返回临时表的表名;
第六、Delphi程序通过存储过程返回的表名提取数据,然后删除临时表;
第七、定期清楚临时表。

12楼: 三点建议:
1:创建一个表,记录48个表的特征,然后根据该表,确定可能存在满足条件的表,
最后在这些可能存在符合条件的表中查找记录.
2.为充分发挥你的CPU的并行处理能力,采用多线程并行查询吧.
3.在查询语句中,尽量不要使用通配符"*",而只列出需要的字段,以减少处理的
数据量.这在将几个表组合到一起时特别有效. 如用友erp软件下载

13楼: 多人接受答案了。