gpt4 book ai didi

sql - where 和 join 有区别吗?

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

我有两个相同的查询。首先我使用 Where

SELECT dings.id, doorbots.id
FROM dings
INNER JOIN doorbots ON dings.doorbot_id = doorbots.id
WHERE doorbots.id = 1615131 AND
deleted_at is NULL
ORDER BY dings.created_at;

第二步,我将所有过滤器放入 join

SELECT dings.id, doorbots.id
FROM dings
INNER JOIN doorbots ON dings.doorbot_id = doorbots.id AND
doorbots.id = 1615131 AND
deleted_at is NULL
ORDER BY dings.created_at;

我有一个复合索引:doorbot_id_idx btree (doorbot_id) WHERE deleted_at IS NULL

这两个查询之间有什么性能差异吗?最好的方法是什么?

最佳答案

这两种方法很可能会提供更接近的性能,如果不相同的话。让查询规划器来完成肮脏的工作。 :)

问题是要在您的 SQL 中保持良好的可读性,因此在这种情况下您必须:

  • 将过滤器表达式放在WHERE 子句上;
  • 只将连接表达式放在JOIN 上。也就是说,这里只有表之间的关系。

关于sql - where 和 join 有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44120884/

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