增删改查是最基本的业务,也是变化和要求最多的业务,那么原始需求如下:
- 假如一个A对应N个B,一个B对应N个C,一个C对应N个D
数据量为 几百 几千 几万 百万
有什么比较好的方法把这个表格查出来吗?
一拍脑袋,我就想出两个办法:
- 先查10个A,循环查对应的B…(非常慢,满足了分页需求)
- 把四张表left join到一起,然后查20条数据出来(速度较快,但是没有满足分页需求,而且查出来的数据一对多的关系被隐藏在重复的A、B、C之间了,需要做去重处理)
- 先查10个A,然后在四张表的join中写一个子查询 “and id in ( select id from A where… )”,相当于先查10个A然后再根据这10个A查找四张表的对应数据,只不过子查询稍微快点(优点是弥补了方法2中分页的缺点,但是方法2的其他缺点没有改善)
暂时就想到上面这些,不知道有没有更好的办法,欢迎留言~
需求总是无尽的,那么新的需求1如下:
- 若表D中存在一个时间字段,现在要求在表格中不需要所有的D数据,只要时间最大\新的D数据
该如何生成新的表格?
简单的办法不用怎么想,尽管不是很好用,如下:
- 根据原始需求的方法3做改进,让他按照时间排序,然后我在使用的时候,每当遇到需要处理D的情况,只取最上面一条 (自然,这很不优雅)