gpt4 book ai didi

mysql - 条件是否应该在子查询上重复

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

我有一个查询,它实际上在一个表上运行两个查询。我查询整个表,一个 datediff,然后是一个子查询,它告诉我每个单元在某些操作步骤中花费的总小时数。主查询将结果限制在 REP 仓库中,因此从技术上讲,我不需要在子查询上放置相同的条件,因为 repair_order 是唯一的。

在子查询上应用 depot 过滤器会更快、更慢还是没有区别?

SELECT
*,
DATEDIFF(date_shipped, date_received) as htg_days,
(SELECT SUM(t3.total_days) FROM report_tables.cycle_time_days as t3 WHERE t1.repair_order=t3.repair_order AND (operation='MFG' OR operation='ENG' OR operation='ENGH' OR operation='HOLD') GROUP BY t3.repair_order) as subt_days
FROM
report_tables.cycle_time_days as t1
WHERE
YEAR(t1.date_shipped)=2010
AND t1.depot='REP'
GROUP BY
repair_order
ORDER BY
date_shipped;

我在很多情况下都遇到过这种情况,但我不知道将过滤器放在子查询、主查询或两者中是否更好。

最佳答案

在此示例中,如果您将 WHERE 子句移动到子查询中以按 REP 过滤,它实际上会更改查询。因此,此时它与性能无关,而是与获得相同的结果集有关。但是,一般而言,如果您通过将 WHERE 子句移动到复杂查询中的其他位置来获得完全相同的结果集,则最好在尽可能原子级别(即在子查询中)执行此操作。然后子查询在主查询必须处理它之前返回一个较小的结果集给主查询。

关于mysql - 条件是否应该在子查询上重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4144891/

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