SQL 使用 Join 好还是多次 Select 好?

2015-05-29 10:17:50 +08:00
 zrp1994

最近在做一个有关地理位置的应用,涉及到的逻辑比较复杂。其中一个表用于存储传感器的基本信息,另一个表存储传感器获得的数据点(这个表的数据相对于其他表来说比较大)。
为了获得用户所拥有的每一个传感器最近一次的数据的列表,我是用了一个带有多个JOIN的语句,并且用Group by来合并同一个传感器的数据,以此来找到每个传感器最近一条数据。但是现在有了几万条数据之后感觉查询有些慢。。。
大家认为这种情况下是使用Join好还是分开多次Select更好呢?
新手求轻喷……

16415 次点击
所在节点    MySQL
30 条回复
koodai
2015-05-29 20:45:30 +08:00
join在mysql下性能差,不推荐,我在阿里云数据库的体验,子查询要极大提高性能。
原因不明所以。
zrp1994
2015-05-29 20:51:49 +08:00
@bitzhuxb 好主意
zrp1994
2015-05-29 20:55:23 +08:00
@bitzhuxb 其实我是这么做的,但是SQL Server里面的GROUP实在是搞不懂。。。和MySQL差太多了
coolcfan
2015-05-29 21:32:37 +08:00
我是跑测试的,不懂这块的具体技术细节,但是用 MySQL 的话,explain 一下,看到给出的那个表格里要是写了需要创建临时表的标记,那并发高一点 CPU 占用会很恐怖。
zonghua
2015-05-29 23:05:49 +08:00
@huijiewei 就是不依靠数据库,由应用?
mingyun
2015-06-07 16:35:05 +08:00
楼主现在采用什么方案?有用吗
zrp1994
2015-06-08 09:33:39 +08:00
@mingyun 暂时还是join,正在考虑加redis缓存经常查询的结果
zonghua
2015-06-12 00:42:08 +08:00
@koodai 哪里可以得到测试数据来验证自己的语句呢?我想学习一下。
mingyun
2015-06-14 11:46:52 +08:00
@FifiLyu 不至于吧,连了很多表?
FifiLyu
2015-06-14 17:46:22 +08:00
@mingyun 最多4个表。表数据基本都是10多万行。基于运维这边,不好优化啊。

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

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

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

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

© 2021 V2EX