1
noreplay 2020-02-27 15:59:24 +08:00
个人倾向于第一种。
|
2
waising 2020-02-27 16:02:01 +08:00 via iPhone
个人倾向于第二种,但实际情况是第一种
|
3
zuoakang 2020-02-27 16:03:31 +08:00
还好不是多库查询,多表多话,看执行速度吧,如果速度慢,可以考虑中间表吧
|
4
wd 2020-02-27 16:07:37 +08:00 via iPhone
取决于实际情况...
|
5
luoyou1014 2020-02-27 16:15:31 +08:00 2
没有性能压力,第一种和第二种没区别,用 3 就浪费工作量
有性能压力,第一种绝对不能用,会直接拖垮数据库,第二种仅能使用于一种情况,就是这个语句不是经常执行的,只是偶尔执行一下,例如在后台查看一些统计数据。 有性能压力,且查询量大,只能采用第三种办法。 |
6
zhaorunze 2020-02-27 16:21:29 +08:00
4.定时任务收集数据
|
7
leon0903 2020-02-27 16:49:24 +08:00
有分页要求的话 只能用第一种吧。
|
8
bbbai 2020-02-27 17:16:06 +08:00
倾向第一种。数据量过大的 实时性要求不高倾向于 #6 提出的第四种
|
9
akira 2020-02-27 17:17:16 +08:00
2 3
|
10
newtype0092 2020-02-27 17:18:32 +08:00
这几种方式都有存在的必要,没有一种方法能通吃所有场景。
|
11
laojiaqing 2020-02-27 17:20:48 +08:00
定时任务就不会有性能压力?
|
12
zhuangjia 2020-02-27 17:22:54 +08:00
倾向于第一种,实际第二种
目的是方便理解和修改…… |
13
Ministor 2020-02-27 17:44:16 +08:00
索引啊 es 之类的
|
14
silvermuse 2020-02-27 17:45:26 +08:00 1
从不用联表查询。。多数用二,请求频繁性能压力特别大的用三。
联表查询量稍微上来一点点就不行了,性能实在太差。 |
15
wzwwzw 2020-02-27 17:47:30 +08:00
不要求实时,用定时任务执行第一种,把结果存缓存。实时第二种。
|
16
loryyang 2020-02-27 19:43:28 +08:00
看你多复杂了,太复杂,用 1 的方法有时候会很慢,需要做专门的优化。如果速度 OK 的话,1 挺好的。为了省事,就 2 好了
另外,2 的查询还会涉及到原子性问题 |
17
loryyang 2020-02-27 19:44:30 +08:00
不少引擎对这种联合查询场景有专门的优化,不过不是万能的,稍微复杂一些就可能无法优化,而导致速度变得很慢
|
18
optional 2020-02-27 19:45:44 +08:00
没什么好争议的:
OLAP 场景 第一种,OLTP 场景 第二第三种。 |
19
opengps 2020-02-27 20:25:42 +08:00 via Android
为了程序简单选择 1
为了数据库能扩容,选择 2 |
20
zivyou 2020-02-27 20:30:01 +08:00
个人第一种用的多些。主要写起来优雅一些,性能要求也没那么高
|
21
reus 2020-02-28 09:51:27 +08:00
如果你不是用 mysql5.x,那没必要用 2、3。
|
22
doudou1523102 2020-02-28 10:46:00 +08:00
觉得不用修改第一种,需要修改第二种,实际上第一种修改可能一个 sql 看一上午,要分段拿出 sql 看,很费时间
|