我现在有两个表,
Table1有200万行,结构如下
ID,Times
1,1,
2,1,
……
Table2有4万行,结构如下,
ID,Class,Grade,
1,2,3,
2,2,3,
3,1,3
……
现在我想把table2中用户在tables1中的times字段查出来,但联表时200万x4万需要运算的时间太久了,不知道哪位大牛能给指条明路,感激不尽啊
select a.id,a.class,a.grade,b.times from Table2 a,Table1 b where a.id=b.id
这样ok,可以查出来,不过单个ID在200万的表里查询一次1.7秒,200万x4万这个大概算了一下估计要18个小时,所以结果比较绝望,不知道有没有优化的方法。
PS ID已经设为主键了
mysql大数据量联表查询
答案:5 悬赏:40
解决时间 2021-02-20 15:34
- 提问者网友:无心恋土
- 2021-02-20 06:36
最佳答案
- 二级知识专家网友:伤口狠精致
- 2021-02-20 06:58
似乎没有什么可在优化的余地,如果经常这样查询,建个视图吧。还有就是在索引类别是做些选择
全部回答
- 1楼网友:嗷呜我不好爱
- 2021-02-20 12:54
select a.id,a.class,a.grade,b.times from Table2 a,Table1 b where a.id=b.id
如果没有ID重复的话,最好把Table1和Table2的ID列都设置成主键,如果用重复的建立索引也可以!
- 2楼网友:哥在撩妹请勿打扰
- 2021-02-20 11:20
ID已经设为主键了
200万的表跟4万的表,除非你系统的硬盘、内存、CPU配置特低,否则,效率上不至于你说的那么慢的(我普通的台式机CPU为1.5G的都不至于那么慢)
肯定有优化的余地,hi我吧
- 3楼网友:摧毁过往
- 2021-02-20 09:56
select t2.*,t1.times from tables2 t2 left outer join tables1 on t1.id=t2.id
- 4楼网友:萝莉姐姐鹿小北
- 2021-02-20 08:35
明显是一对多吗
select * from 主 a left join 子 b on a.g_num=b.g_num
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |