我的简单问题是:多表连接是否会降低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都需要一个临时表,还有很多其他的细节.
| 归档时间: |
|
| 查看次数: |
2268 次 |
| 最近记录: |