MySQL多表关联查询效率高点还是多次单表查询效率高,为什么?

小小小小柚子 秀才 2021-09-14 09:17:19

比如有a,b两张表,两张表都差不多有十几w行记录,需要查询的字段在两张表中,那么是关联查询效率高点还是分别查a,b两张表,再在service层合并数据效率高点?谢谢!

...全文
991 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
新生代农民工 2021-09-14
  • 打赏
  • 举报
回复 1
join联表查询时候小表驱动大表,通过索引字段去进行关联。如果表记录比较少的话,效率还是可以的,有时效率超过单表查询。但是如果数据量上去,多表查询是笛卡尔乘积方式,检索的数据是几何倍上升。另多表查询索引设计上也考验开发者的能力,索引设计如果不合理,大数据量下的多表查询,很可能把数据库拖垮。
同时相比而言,拆分成单表查询+代码上组装,则业务逻辑更加清晰,优化更方便,单个表的索引设计上也更简单。多用几行代码,多几次数据库查询换取这些优点,还是非常不错的。join联表的SQL,基本不太可能被复用,但是拆分后的单表查询,比如上面例子中,我查询出tab数据,任何地方组装需要tab数据,我都不需要再次做相关查询,直接使用。在实际开发场景中,在代码初步开发阶段(如果摊上一个不太靠谱的产品),业务发生变动,某张表的结构发生变动,很可能整个join查询都变得不可用,复杂的关联查询,在修改时,基本等于推倒重来。很多复杂的逻辑在Service处理,不在数据库处理会更好。
单表查询+代码上组装相当于解耦,现在开发中,我们常常使用各种ORM框架

67,781

社区成员

发帖
与我相关
我的任务
社区描述
汇集数据库的爱好者和关注者,大家共同学习、探索、分享数据库前沿知识和技术,像松鼠一样剥开科学的坚果;交流Gauss及其他数据库的使用心得和经验,互助解决问题,共建数据库技术交流圈。
数据库数据仓库 企业社区 北京·海淀区
社区管理员
  • Gauss松鼠会
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

欢迎大家同时关注Gauss松鼠会专家酷哥。

https://www.zhihu.com/people/ku-ge-78-98

试试用AI创作助手写篇文章吧