首页 新闻 会员 周边

如图 如何高效查询出所需要的结果集

0
悬赏园豆:20 [已解决问题] 解决于 2022-12-09 15:11

如图 有T,A,B三个表,求怎么查询出想得到的结果集

我恰芙蓉王的主页 我恰芙蓉王 | 初学一级 | 园豆:190
提问于:2020-10-03 13:01
< >
分享
最佳答案
0

你的子查询结果已经把思路框死了,id+表名,是不是可以贴一下完整需求,然后给你分析一下,
我看到的时候思路和你差不多 我是做一张视图把AB合在一起。
或者可以利用中间层,拿到A表的1,2,3这三个id后 我去A表 然后 id in (1,2,3)
然后再去B表 id in (1,2,3)输出的数据 list.add到集合里

收获园豆:20
Benjamin杰明 | 菜鸟二级 |园豆:263 | 2020-10-07 10:39

id肯定走索引 然后查询两张表数据又会很快,只不过拼接整理的工作交给中间层去做

Benjamin杰明 | 园豆:263 (菜鸟二级) | 2020-10-07 10:40

哈哈哈,是的,需求是两张一样的订单表,根据用户名关联两张表查询分页,时间排序~,希望大佬有更好的思路

我恰芙蓉王 | 园豆:190 (初学一级) | 2020-10-07 11:42

@Benjamin杰明: 我也想过把子查询返回,代码里区分条件,然后分别去A,B表里id in(),但是能一条sql解决的事还是不要多次连接数据库好。。。

我恰芙蓉王 | 园豆:190 (初学一级) | 2020-10-07 11:46
其他回答(1)
0

si~~,你想查啥结果集?

乾子 | 园豆:347 (菜鸟二级) | 2020-10-03 18:01

其实就是表A union all 表B再分页查询,如何高效,目前我是先A union all B 分页好,查出id(避免回表),再去关联表A和表B,得到上图的最后一个结果集,想知道有没有别的办法

支持(0) 反对(0) 我恰芙蓉王 | 园豆:190 (初学一级) | 2020-10-03 18:29

实际上的条件不止这个userName,如果select * 发现不走索引,于是想到这种办法。表a数据量四十万吧,表b暂时没数据,直接select * 再union all需要三秒,因为不走索引,上图子查询的方式0.4秒

支持(0) 反对(0) 我恰芙蓉王 | 园豆:190 (初学一级) | 2020-10-03 18:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册