对性能肯定是有影响的,建议把多表查询分解出来,参考如下:
请问下这本书是什么名字?
@朝兮兮: 高性能MySQL
我们项目组规定,线上业务不能有多表查询。如果有这种需求转成单表查询加缓存
在设计数据库的时候也不应该出现主外键关联的情况吧?
@德川hlkawa: 嗯,不存在数据库结构上的主外键。关系都由程序来维护。数据库只存id,不建立实际的关系
对性能的影响那是肯定会有的!
你能这样想这个问题。说明你还不到想这个问题的时候。
百度学下sql语句性能影响注意事项。把写sql的时候要注意的地方先都掌握了。再回头看。
之前接触过电商项目,是15年的时候,那个时候还打酱油的还没有写代码,大概看了看代码全部都是单边查询而且表与表之间没有主外键关联?不知道现在是不是还是这样的?
@德川hlkawa: 外键不是必须的.索引是必须的.
所以让你去学sql优化.分表不分表也要看实际情况而定.
会的。影响比较大,10万不到的两个表 left outer join 如果右表有null 还要group 之类 没2 30秒 查不出来
常用的话, 建议做新表 外键约束 或者过程存储
这个有点夸张。多表关联查询影响肯定是有的,但只要结构合理,也不会有明显的性能问题。
我经常做多表查询的报表,数百万条记录,一般也是一两秒内就可以出结果。
@飞不动: 1-2秒属于严重性能问题.
除非是管理后台.互联网项目sql超过500ms就得优化
我的看法是如果查询必须要打到db上,那么join不join无所谓,但耗时必须要在ms级(一般允许在2-3ms左右),到了10ms上就绝不能让其直接打到db上了。
一般直接针对网络用户的建议任何查询都不要join,类似erp的随便你join
如果并发量大的话,建议不要做多表联查,如果索引规范、表设计合理的话,做一下联合查询也可以。