大数据量联表操作

105 天前
 ModiKa2022

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

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

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

https://www.v2ex.com/t/1061170

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

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

© 2021 V2EX