mysql 为什么不推荐三张表以上的关联?

2019-07-05 15:33:25 +08:00
 Aresxue

今天看到了一个说法说 mysql 不推荐三张表以上的关联,我觉得多表关联虽然可读性较差和耦合性较高,但是可以节省 IO 次数,减少执行时间从而提升接口的性能。

13783 次点击
所在节点    MySQL
68 条回复
niubee1
2019-07-05 16:36:43 +08:00
主要因为那个时候 MySQL 弱得一逼
auto
2019-07-05 16:37:55 +08:00
数据量大了以后若是要分库很麻烦。还有最重要的就是性能问题了。可以看这个 https://www.zhihu.com/question/56236190 里面的说明
auto
2019-07-05 16:47:24 +08:00
还有可读性也是个问题,看到以前的老项目几百行的 sql,简直脑壳痛
Takamine
2019-07-05 17:28:31 +08:00
我们是直接要求尽量把有多表关联的业务丢到内存中去处理。:doge:
icegreen
2019-07-05 17:51:48 +08:00
可扩展性和可读性吧;
我更看重可读性; 代码首先是给人读的。
msg7086
2019-07-05 17:54:44 +08:00
是从哪里看出节约 io 次数的?感觉没什么区别啊……
cnail
2019-07-05 17:59:40 +08:00
因为对 hash join 支持的不好,这就是和 oracle 最大的差别
wysnylc
2019-07-05 18:48:23 +08:00
我连两张都不推荐
l00t
2019-07-05 18:57:37 +08:00
因为 MySQL 是个弱鸡啊,你看 Oracle 就没这说法。
Cbdy
2019-07-05 18:58:49 +08:00
不要脱离执行计划谈 SQL 性能
shakoon
2019-07-05 19:23:30 +08:00
其实关联表的数量并不是决定性能的唯一要素,关联字段之间的索引配置、过滤条件的设置都比表的数量重要。在鄙人所在银行业,关联十几个表那都不是什么罕见事 - -#
akira
2019-07-05 20:08:12 +08:00
别说 3 表了 2 表都是能不连就不连
1iuh
2019-07-05 20:12:03 +08:00
我现在为了减少联表查询,在很表内冗余了很多数据。现在存储空间比较不值钱。
jry
2019-07-05 20:21:55 +08:00
尽量 foreach
sun1991
2019-07-05 20:33:58 +08:00
又见我手写的 foreach 比数据库引擎强... ( ̄▽ ̄)"
说起来, MySQL 真的这么弱吗?
sampeng
2019-07-05 20:48:04 +08:00
迪卡集。。。。
10*10*10 就是 1000 条记录。。
sampeng
2019-07-05 20:51:42 +08:00
前几天还和别人掰扯关联表太多的问题。。。查询速度还可以吧。几十毫秒。但是。数据库 cpu 高的感人。。差不多最高峰 50%吧。。然后优化掉这一个关联了 5 张表的 sql。
前面说索引的。索引也不是银弹啊。5 张表。explain 全部走索引。4 张索引查询 100 条记录以下,1 条索引需要扫描 10000 左右的数据集。大部分 dba 都会说这个 explain 已经没得优化了。。。
然后我就和人家掰扯。。把那个扫描 10000 的拿出来。然后再查后面的 4 个表连表。。恩。CPU 掉到 5%。。。
wc951
2019-07-05 21:14:48 +08:00
单表查询我为什么不用 hbase、hive、impala
hhyvs111
2019-07-05 22:07:02 +08:00
大公司都是存一张表,省事
des
2019-07-05 22:35:10 +08:00
实际环境真有那么多表 join,而且还都是 cross join ?
就算是只用一个表,也照样能能整崩,老老实实多学数据库和优化才是正道

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

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

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

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

© 2021 V2EX