humyfred 发表于 2014-7-31 17:18:54

mysql百万数据操作问题(急~~~~~)

现在本人在做百万数据的联接操作(所有表都是至少几十万,有的上百万),首先是把A表,B表根据三个字段判断相等而联接一起生成中间表,而此时中间表还需与C表根据两个字段判断相等再进行联接生成最后的结果。问题是:中间表已经生成好了,用了0.8s,但是与C表联接而长时间等待,生成失败。(A,B,C表都已经建好相关的索引)。各位大神有没有很好的建议可以帮助小弟!!!!
代码如下:

A,B表联接语句
select   若干字段   from A WHER exists (select 1 from B where A.1=B.1 and A.2=B.2 AND A.3=B.3) GROUP BY A.1,A.2(中间表)



中间表与C表:
在上面语句基础上
select * from (中间表) D,C where D.1=C.1 and D.2=C.2



各位大神有没有很好的建议可以帮助小弟!!!!

humyfred 发表于 2014-7-31 17:20:13

补充一个问题   select * from (中间表) D    这个语句就已经不能查出数据来了,用小数据来测试这语句是可以用的

admin 发表于 2014-7-31 18:29:10

感觉你语句有严重的效率问题。
首先不建议复杂的语句。
其次exists、group by 等的效率比较低。
另外用explain看看语句的执行计划,来具体优化。

不过有点疑惑的是,你的第二句相对简单,不应该有问题,其实慢的应该是你第一句,另外也不知道你的中间表是个什么情况,需要检查索引情况;与其这样还不如用一个的大的join语句来完成,看看效果,不行就分成很多小SQL,然后程序或者用其他办法来拼接。

后4天不在线,请其他感兴趣的朋友继续作答吧...
页: [1]
查看完整版本: mysql百万数据操作问题(急~~~~~)