两张稍大数据量表的联合查询

每一张表大概有70W条数据,像wherea.id=b.id或者是join这种类似的话,中间要处理笛卡尔积有70W*70W条,数据量太大,运行起来也慢(大概要运行28小时左... 每一张表大概有70W条数据,像where a.id = b.id 或者是join这种类似的话,中间要处理笛卡尔积有70W*70W条,数据量太大,运行起来也慢(大概要运行28小时左右)。有没有好的办法,比如优化sql,或者是分组处理来缩短这个处理时间(最好控制在8小时以内)?等等,请大家帮帮忙! 展开
 我来答
nietiezheng
2013-10-21 · TA获得超过5536个赞
知道大有可为答主
回答量:3132
采纳率:87%
帮助的人:1228万
展开全部
说实话,70W记录不算大,而你执行查询的条件是where a.id = b.id这种等值连接,可以使用索引来提高查询效率的,一般数据库内部也不会使用笛卡尔集这种算法执行,对于数据量大的连接查询,会使用hash连接或多路归并排序连接算法来执行。
建议你在两个表的id属性上先创建索引,再执行查询。
如果还效率慢的话可能是你语句中还有其他导致查询慢的查询条件,你可以把完整的语句发上来,大家帮你分析一下,看如何优化。
追问
哦,谢谢了,那我先试试!主要是在学校练习不会遇到这么多的数据,也没去考虑如何解决。
追答
你如果真正在数据库上执行过的话就会知道,实际上用不了这么多时间,数据库内部是会进行优化的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式