gpt4 book ai didi

mysql - 多表连接是否会减慢mysql

转载 作者:可可西里 更新时间:2023-11-01 07:12:28 27 4
gpt4 key购买 nike

我的简单问题是:多表连接会降低 mysql 性能吗?

我有一个数据集,我需要在正确索引的列上对 6 个表进行 JOIN。

我读的线程是这样的

Join slows down sql MySQL adding join slows down whole query MySQL multiple table join query performance issue

但问题仍然存在。

有经历过这件事的人能回答一下吗?

最佳答案

MySQL 默认使用 Block Nested-Loop连接的连接算法。

SELECT t1.*, t2.col1
FROM table1 t1
LEFT JOIN table2 t2
ON t2.id = t1.id

实际上,产生与如下子查询相同的性能:

SELECT t1.*, (SELECT col1 FROM table2 t2 WHERE t2.id = t1.id)
FROM table1 t1

索引对于满足子查询中的 WHERE 子句显然很重要,并且以相同的方式用于连接操作。

假设有适当的索引,连接的性能等于 MySQL 必须执行的查找次数。查找越多,所需时间越长。

因此,涉及的行越多,连接就越慢。与小结果集(几行)的连接很快并且被认为是正常使用。保持你的结果集小并使用适当的索引,你会没事的。不要避免连接。

当然,对 MySQL 来说,对多个表的结果进行排序可能会稍微复杂一些,任何时候连接文本或 blob 列时,MySQL 都需要一个临时表,还有许多其他细节。

关于mysql - 多表连接是否会减慢mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28902659/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com