gpt4 book ai didi

mysql - 直接LEFT JOIN链和SELECT子查询LEFT JOIN的区别

转载 作者:行者123 更新时间:2023-11-30 00:39:23 25 4
gpt4 key购买 nike

我有一个由 4 个表组成的 MySQL JOIN:

直接链接

SELECT col1, col2, col3... col12 FROM
(((tbl1 LEFT JOIN tbl2...) LEFT JOIN tbl3 ...) LEFT JOIN tbl4);

子选择

(SELECT col10 .. col12 FROM 
(SELECT col7 .. col9 FROM
(SELECT col1, ... col6 FROM tbl1
LEFT JOIN tbl2) AS J1
LEFT JOIN tbl3) AS J2
LEFT JOIN tbl4...)

这两种方法之间是否存在效率差异?我的直觉是,子选择使用 SELECT ... WHERE 子句丢弃不必要的行和列,并使 JOIN 更快且占用更少的内存。有什么建议吗?其他数据库怎么样?

最佳答案

这取决于您的表大小和按查询过滤的数据。

条件1:如果您的表大小正常(假设所有表大约有 5000 行)并且您在没有任何过滤的情况下从表中获取数据,那么两个查询不应该有任何差异,即使第一个查询可以提供更好的性能。

条件2:如果您的表有大量数据,假设行数为数十亿,但在过滤数据后,实际数据集假设接近大约。低于 100 行,那么第二个查询可能会更好。

没有硬性规定,您必须根据表数据大小和要求以各种方式检查查询性能。经验法则是,如果我们可以减少不同表连接的数据大小,那么性能就会提高。

关于mysql - 直接LEFT JOIN链和SELECT子查询LEFT JOIN的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21899104/

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