gpt4 book ai didi

sql - 为什么自连接比 or 快?

转载 作者:太空宇宙 更新时间:2023-11-03 11:17:36 25 4
gpt4 key购买 nike

我正在尝试过滤关系表以获得满足两个条件的表子集(即:我想要 color_ids 为 1 或 2 的条目的所有 ID)。这是一张结实的 table ,所以我正在尝试尽可能多地进行优化。

我想知道是否有人可以解释我在这种情况下的发现:

为什么

SELECT DISTINCT a.id 
FROM RelationshipTable as a
JOIN RelationshipTable as b ON b.id = a.id
WHERE a.color_id = 1
AND b.color_id = 2;

SELECT DISTINCT id 
FROM RelationshipTable
WHERE color_id = 1
OR color_id = 2;

MySql 4.1 中?

最佳答案

这两个不是同一个查询,不应该给出相同的结果集。在第一个查询中,您需要同时满足这两个条件的所有记录,您有一个 color_id = 为 1 的记录和一个 color_id 为 2 的相同 ID 的记录。在第二个查询中,您将获得所有具有两个颜色 ID 的记录和所有只有一个或另一个的记录。当然,由于您要求返回不同的字段,因此您可能看不到它。无论如何,第二个查询有点愚蠢,因为它可以表示为:

select 1 as color id 
union all
select 2

而且永远不要打 table 。这将使它变得非常快。

关于sql - 为什么自连接比 or 快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3980741/

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