为什么一个查询会根据多个条件进行连接?
例如:
SELECT *
FROM Sales s
JOIN Customers c ON c.CustomerID = s.CustomerID
AND c.TrasactionID = s.TransactionID
在此示例中,加入的特定字段并不重要。我编造它们只是为了帮助说明我的要求。我见过这样的查询。这通常只是出于性能原因而使用,还是有时需要使用多个连接条件? 谢谢!
最佳答案
基本上,如果您在事务 T1 和 T2 的每个表上都有 2 行 customer_id=A,并且仅连接客户,则意味着您将减少行数。销售表的每个 A 行将连接到客户表的两个 A 行。 customer_id=A 的输出将为 4 行。
如果在 transaction_id 上添加条件,则 sales 中 customer_id = A 和 transaction_id = T1 的行将仅连接到customers 中相应的行。在这种情况下,customer_id=A 的输出将只有 2 行。
除此之外,如果在索引中使用这 2 列,您还会有性能原因。如果您只调用其中之一,则可能会跳过索引,从而导致性能下降。
关于SQL:根据多个条件连接的目的/好处是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45604325/