日期:2014-05-17  浏览次数:20381 次

多库多表联合查询效率优化问题
题目如下:
表Table1结构
c_id,orderNo,c3,c4,c5

有1000个这样的表(Table1...Table1000,每个表大概100多万笔记录),c_id主键,orderNo不唯一(有建立非聚簇索引)

也就是这1000个表相当于一个大数据,我要依据orderNo查出我想要的数据(查出的结果数据不超过500笔)

有种多库多表联合起来一起查的意思,怎么写个存储过程作查询比较快?

我现在400个表(数据量大概在4亿左右)按orderNo查询的话大概要15分钟左右。

用的是
SELECT orderNo,c3,c4,c5 FROM Table1 WHERE orderNo= 'xxxxxxxx' UNION
SELECT orderNo,c3,c4,c5 FROM Table2 WHERE orderNo= 'xxxxxxxx' UNION
...

数据库方面的高手有没有什么好的建议、?? 或给个示例代码
大数据 多表联合 索引 查询 优化

------解决方案--------------------

之前也有人提出类似的问题。

你这么 union ,把400多个表union起来,速度肯定是慢的。

能不能考虑把原来的那么多的表合并成一个表呢,建个分区表,按照某个字段分区,这样至少你不用写400行的代码来union了
------解决方案--------------------

SELECT orderNo,c3,c4,c5 FROM Table1 WHERE orderNo= 'xxxxxxxx'
这个语句作为触发器放在表上,所有选择出来的数据放入目标表格,以后的操作都在目标表格上进行。