Oracle级联查询

增删改查是最基本的业务,也是变化和要求最多的业务,那么原始需求如下:

  • 假如一个A对应N个B,一个B对应N个C,一个C对应N个D
  • 数据量为 几百 几千 几万 百万

    有什么比较好的方法把这个表格查出来吗?

一拍脑袋,我就想出两个办法:

  1. 先查10个A,循环查对应的B…(非常慢,满足了分页需求
  2. 把四张表left join到一起,然后查20条数据出来(速度较快,但是没有满足分页需求,而且查出来的数据一对多的关系被隐藏在重复的A、B、C之间了,需要做去重处理
  3. 先查10个A,然后在四张表的join中写一个子查询 “and id in ( select id from A where… )”,相当于先查10个A然后再根据这10个A查找四张表的对应数据,只不过子查询稍微快点(优点是弥补了方法2中分页的缺点,但是方法2的其他缺点没有改善

暂时就想到上面这些,不知道有没有更好的办法,欢迎留言~

需求总是无尽的,那么新的需求1如下:

  • 若表D中存在一个时间字段,现在要求在表格中不需要所有的D数据,只要时间最大\新的D数据

该如何生成新的表格?

简单的办法不用怎么想,尽管不是很好用,如下:

  1. 根据原始需求的方法3做改进,让他按照时间排序,然后我在使用的时候,每当遇到需要处理D的情况,只取最上面一条 (自然,这很不优雅
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值