多表连接是否会降低mysql的速度

Bel*_*ton 5 mysql join

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

我有一个数据集,我需要在正确索引的列上做6个表JOIN.

我读过这样的帖子

加入慢下来sql MySQL添加连接减慢整个查询 MySQL多表连接查询性能问题

但问题仍然存在.

经历过这件事的人能回复吗?

Mar*_*ams 14

默认情况下,MySQL使用块嵌套循环连接算法进行连接.

SELECT t1.*, t2.col1
FROM table1 t1
LEFT JOIN table2 t2
  ON t2.id = t1.id
Run Code Online (Sandbox Code Playgroud)

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

SELECT t1.*, (SELECT col1 FROM table2 t2 WHERE t2.id = t1.id)
FROM table1 t1
Run Code Online (Sandbox Code Playgroud)

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

假设正确的索引,连接的性能相当于MySQL必须执行的查找次数.查找越多,所需的时间越长.

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

当然,对于MySQL来说,从多个表中排序结果可能会有点复杂,每当你加入text或blob列时,MySQL都需要一个临时表,还有很多其他的细节.