首页 新闻 会员 周边

电商模块 mysql多表查询会影响性能吗?

0
悬赏园豆:100 [已解决问题] 解决于 2017-08-29 21:13

公司的app里面有个家政商城的模块,查询店铺信息在设计数据库时,可以做成一张表来查询,也可以拆成三张表(更利于后期扩展)做多表联合查询,但是不知道多表联合查询会影响性能吗?

Brian_Huang的主页 Brian_Huang | 菜鸟二级 | 园豆:319
提问于:2017-08-28 23:13
< >
分享
最佳答案
2

对性能肯定是有影响的,建议把多表查询分解出来,参考如下:

收获园豆:100
ycyzharry | 高人七级 |园豆:25651 | 2017-08-29 09:08

请问下这本书是什么名字?

朝兮兮 | 园豆:69 (初学一级) | 2017-08-29 13:53

@朝兮兮: 高性能MySQL

ycyzharry | 园豆:25651 (高人七级) | 2017-08-29 18:59
其他回答(6)
2

我们项目组规定,线上业务不能有多表查询。如果有这种需求转成单表查询加缓存

czd890 | 园豆:14412 (专家六级) | 2017-08-28 23:22

在设计数据库的时候也不应该出现主外键关联的情况吧?

支持(0) 反对(0) Brian_Huang | 园豆:319 (菜鸟二级) | 2017-08-29 08:43

@德川hlkawa: 嗯,不存在数据库结构上的主外键。关系都由程序来维护。数据库只存id,不建立实际的关系

支持(0) 反对(0) czd890 | 园豆:14412 (专家六级) | 2017-08-29 10:17
0

对性能的影响那是肯定会有的!

jiangxueqiao | 园豆:206 (菜鸟二级) | 2017-08-29 01:07
0

你能这样想这个问题。说明你还不到想这个问题的时候。

百度学下sql语句性能影响注意事项。把写sql的时候要注意的地方先都掌握了。再回头看。

吴瑞祥 | 园豆:29449 (高人七级) | 2017-08-29 01:37

之前接触过电商项目,是15年的时候,那个时候还打酱油的还没有写代码,大概看了看代码全部都是单边查询而且表与表之间没有主外键关联?不知道现在是不是还是这样的?

支持(0) 反对(0) Brian_Huang | 园豆:319 (菜鸟二级) | 2017-08-29 08:46

@德川hlkawa: 外键不是必须的.索引是必须的.

所以让你去学sql优化.分表不分表也要看实际情况而定.

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-08-29 09:31
0

会的。影响比较大,10万不到的两个表 left outer join 如果右表有null 还要group 之类 没2 30秒 查不出来
常用的话, 建议做新表 外键约束 或者过程存储

金琥 | 园豆:2605 (老鸟四级) | 2017-08-29 08:51

这个有点夸张。多表关联查询影响肯定是有的,但只要结构合理,也不会有明显的性能问题。

我经常做多表查询的报表,数百万条记录,一般也是一两秒内就可以出结果。

支持(0) 反对(0) 飞不动 | 园豆:104 (初学一级) | 2017-08-29 09:09

@飞不动: 1-2秒属于严重性能问题.

除非是管理后台.互联网项目sql超过500ms就得优化

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-08-29 09:31
0

我的看法是如果查询必须要打到db上,那么join不join无所谓,但耗时必须要在ms级(一般允许在2-3ms左右),到了10ms上就绝不能让其直接打到db上了。

一般直接针对网络用户的建议任何查询都不要join,类似erp的随便你join

Daniel Cai | 园豆:10424 (专家六级) | 2017-08-29 10:46
0

如果并发量大的话,建议不要做多表联查,如果索引规范、表设计合理的话,做一下联合查询也可以。

程序员十三 | 园豆:214 (菜鸟二级) | 2017-08-29 11:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册