gpt4 book ai didi

sql - 将过滤器放在 INNER JOIN 而不是 WHERE 中

转载 作者:行者123 更新时间:2023-11-29 14:15:05 25 4
gpt4 key购买 nike

我正在分析我刚在工作中继承的一些代码,我有一个问题:

这是我继承的片段:

    Select sum(a.claim) as total
from claims c
inner join claim_entries ce
on c.id = ce.claim_id
and ce.deleted = 0
and ce.dos >='2012-03-01'
where c.deleted = 0
and c.document_type = 0

我重写了代码,因此 ON 子句位于 WHERE 子句中:

    Select sum(a.claim) as total
from claims c
inner join claim_entries ce
on c.id = ce.claim_id
where c.deleted = 0
and c.document_type = 0
and ce.deleted = 0
and ce.dos >='2012-03-01'

原始代码运行时间为 36 秒,而我的重写代码运行时间为 9 秒。在 INNER JOIN 的 JOIN 子句中放置过滤器与在 WHERE 中放置过滤器有区别吗?我只在使用 LEFT JOINS 时这样做过,而从未见过为 INNER JOIN 这样做过。我也不确定为什么原始文件比重写的时间长 4 倍,除非在我运行原始文件后缓存了数据。

最佳答案

对于内部联接,将条件放在 ON 子句或 WHERE 子句中并不重要。执行计划将是相同的。使用 EXPLAIN 来确认这一点。

执行时间的差异可能是由于缓存的影响。重复测试几次以获得可靠的结果。

关于sql - 将过滤器放在 INNER JOIN 而不是 WHERE 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51972390/

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