今天写了一个sql 关联了19张表,怎么优化

尼禄花嫁 发布于 09/28 16:13
阅读 5K+
收藏 1

如果只根据不同类型及其他条件查询可以分开写成9个sql 每个sql只需要关联一张表,但需求上有查询全部 。写一块就得关联19张表。 怎么办怎么办?

以下是问题补充:

@尼禄花嫁:但凡主表里加一个字段 我就可以单表查了。但是老项目改动大被负责人否决了。最终决定联表查。列表查询是我写,统计是另一个人写的 我把它的超级大sql 也拆成9个sql 每个只需关联两张表。问题来了 统计的数量和列表里查的数量对不上 导致这一块改了两周还问题不断。 (10/24 00:18)
加载中
20
会哭的鳄鱼
会哭的鳄鱼
你确定你这个系统设计的没问题?19表联查!你还是考虑怎么改进系统的设计吧!远比你去找怎么优化实际的多!
4
秋名山第一码神
秋名山第一码神

这种基本就得定时跑 存到结果表里,然后查结果表

1
木九天
木九天

单表查寻呗,然后具体逻辑写在代码层

ywgrui
ywgrui
说说简单的 单表势必造成很多in查询
1
君千殇520
君千殇520

一般sql还是不要写太复杂,这样好优化,能代码逻辑上解决的,就代码逻辑来整

1
stackwill
stackwill

凭本事写的代码为什么要优化

尼禄花嫁
尼禄花嫁
你说得很对 但我不甘心写出这么laji的代码
0
苏州三哥
苏州三哥

实时性要求?一定得查这么多表?设计不能调整?一定要mysql ? 数据量?

0
jim19770812
jim19770812

是按照类型分表的吗?如果是的话最好改进分表规则,改成按照机构或者用户,这样就更合理。

如果没有分表,那就是逻辑上你系了9个sql,那这个问题就很简单了,只要针对查询全部增加一个sql就好了

0
b
bigbatcn

对于有些商业数据库可以写视图的,这样可以提高查询x'lü

0
洞天水月
洞天水月

引用来自“木九天”的评论

单表查寻呗,然后具体逻辑写在代码层

执行最简单的sql然后通过代码来组合数据,并是不执行sql记录越少效率越搞。

iehyou
iehyou
回复 @iehyou : 不过mysql 几十w的表 关联查查询的确很慢,有索引也没很大效果,相对于oracle来讲。
iehyou
iehyou
回复 @木九天 : 看场景了 阿里是百W的数据起步, 大部分都是管理系统,有个几十W顶天了。 能快速跑起来就行了。
木九天
木九天
回复 @一个柒 : 效率低的...不光阿里哈哈
一个柒
一个柒
回复 @木九天 : 大部分公司的数据么有这么多,也没有那并发,管理系统而已,所以别听阿里粑粑的,五六张表关联也是没问题的。
木九天
木九天
阿里巴巴开发手册里有写,防止mysql 负载过高,而且最多不超过3个关联表查询,即便有索引
0
innerloop
innerloop

2个思路
0)再程序业务层 拆分
1)用数据库的存储过程或者函数处理,看看能不能建立中间表,提高效率

狗眼看世界
狗眼看世界
思路没问题,但是1建议使用存储过程或者函数处理,尽量使用代码处理。 db是稀有资源且用且珍惜。
返回顶部
顶部