数据库的 join 查询,子查询,程序的循环语句哪个快一点?

2017-03-06 13:56:09 +08:00
 labasq

一: JOIN 连表查询

二:( select * from ***) 嵌套子查询

三:先查一条主表然后循环主表记录数据再查附表。

这几种哪个快一点?或者还有什么方法?

现在做 model 层的公共查库方法

每个方法我都 join 了十几张表,作为公共方法统一调用。

1838 次点击
所在节点    数据库
27 条回复
ncisoft
2017-03-07 09:44:36 +08:00
@labasq MySQL 的表连接基本就是废物一个,自己用 explain 看看能不能有效利用索引吧,也许加提示( hint ?)能管点用
blacklee
2017-03-07 10:18:50 +08:00
针对标题来讲:这种问题都是具体问题具体分析。
针对主贴来讲:如果都 join 了 10+张表,我看不出多次 select 的坏处在哪里。
图省事来讲:就全部 join ,性能问题丢给 DBA 去。
有责任心+便利来讲:那就拆分 join 到数据量大的表为多一次 select ,数据量小的表直接 join 。
yeyuexia
2017-03-07 14:26:57 +08:00
@labasq https://dev.mysql.com/doc/refman/5.7/en/view-algorithms.html
顺便楼上没一点干货就在那说别人瞎扯的 啧啧
labasq
2017-03-08 08:44:19 +08:00
@ivvei
就是说只是方便了操作,并非提高了速度
labasq
2017-03-09 08:26:59 +08:00
@ncisoft
好的 试试
labasq
2017-03-09 08:27:59 +08:00
@blacklee
多次 select 要循环主表,一个操作就要几十条 select ,甚至过百啊
labasq
2017-03-09 08:28:14 +08:00
@yeyuexia
......额

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

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

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

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

© 2021 V2EX