大数据量联表操作

2024-07-30 14:09:27 +08:00
 ModiKa2022

公司现在的业务, 总会涉及到连表操作, 百万级的数据, 一联表, 查询会变得的缓慢. 例如订单, 收货单, 入库单, 退货单, 验收单 数据一直在写入 如果涉及到这种情况, 除了冗余存储数据外, 还有什么其他的解决方案吗? 诚恳的咨询下各位

4617 次点击
所在节点    数据库
64 条回复
opengps
2024-07-30 14:17:22 +08:00
硬限制没有太好的办法,就是靠闲时提前生成缓存之类的
sagaxu
2024-07-30 14:19:39 +08:00
难道不先分析一下查询计划?
coderxy
2024-07-30 14:24:51 +08:00
分开查询,在程序里关联
xiaohang427
2024-07-30 14:25:48 +08:00
看查询内容
查询明细,建议不要连表,先查主表,在关联其它表补充数据
汇总查询,定期生成汇总表,避免在大表里做汇总操作。很耗时
lingalonely
2024-07-30 15:07:47 +08:00
为什么需要连表,你又不是做分析,单纯查明细就不要连表
endershadow
2024-07-30 15:11:40 +08:00
大数据领域的技术都卷得这么厉害,感觉好多人都不知道似的
dddd1919
2024-07-30 15:15:02 +08:00
1. 正常业务功能,用 CDC 工具做宽表,在宽表处理
2. 数据分析,那就把业务数据同步到分析库比如 es
wxyrrcj
2024-07-30 15:19:13 +08:00
分开查询,在程序里关联
gerefoxing
2024-07-30 16:40:09 +08:00
减少大表关联,程序里查询赋值,使用本地缓存+redis 缓存
lolizeppelin
2024-07-30 16:43:14 +08:00
首先...数据库是不是 mysql?
如果是...抬走!
ModiKa2022
2024-07-30 16:46:51 +08:00
@coderxy 列表展示的, 所有的字段都允许搜索, 不能分开写 SQL
ModiKa2022
2024-07-30 16:47:18 +08:00
@lingalonely 列表展示的, 所有的字段都允许搜索, 不能分开写 SQL
ModiKa2022
2024-07-30 16:48:16 +08:00
@endershadow 给个具体的可以实现的关键词或者思路,感谢 !
ModiKa2022
2024-07-30 16:48:36 +08:00
wysnxzm
2024-07-30 16:50:08 +08:00
数据库 join 改为代码 join
优点:笛卡尔积优化为 hash(你写个双重循环当我没说);硬盘查找变为内存查找;可跨库关联且不限制数据来源;可使用缓存优化性能
缺点:需要更多内存;数据库事务失效需要自己实现分布式事务或者不使用事务
ModiKa2022
2024-07-30 16:55:49 +08:00
@wysnxzm 感觉处理的代价比较大
ModiKa2022
2024-07-30 16:57:53 +08:00
@dddd1919 感谢
746970179
2024-07-30 17:12:47 +08:00
个人经验, 外键设置正常, 不会很慢
1 走索引: 业务上绝大部分查询, 都是使用唯一单号(运单号, 订单号, 产品 sku 等)或者时间, 这些字段设置好索引, 就挺快
2 只取要用的字段: 分两步, 第一步是获取当前页的 id, 第二步是针对这一页的 id, 再查询数据.
3 减少查询次数: 一页 100 条数据, 不要每个字段都是 1 个 sql, 同一字段的可以一个 sql 生成字典
ModiKa2022
2024-07-30 17:15:50 +08:00
@746970179 这种是常用的方式, 但是只能处理搜索主表的情况, 现在是每个字段都可以搜索, 所以要 join
thinkwei2012
2024-07-30 17:51:00 +08:00
技术上这种详情表再关联订单表进行某字段搜索查询确实很慢,最简单的方法就是做冗余,大胆一点就单独拉一张宽表专门搜索数据双写。
要么改下页面设计,比如让产品重新设计页面拆分一些到不同的查询表单中,尽量避免少的联表

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1061170

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX