SQL:根据多个条件连接的目的/好处是什么?

标签 sql sql-server

为什么一个查询会根据多个条件进行连接?

例如:

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/

相关文章:

sql - 获得 10 个不同的项目以及相关任务的最新更新

php - SQL left join自动别名?

SQL SERVER QUERY 选择每个项目的最大值记录

sql-server - 什么是 Appharbors SSL SNI?它是否足以运行 Stripe Payments?

MySQL 表 UNION 问题

mysql - 如何选择与随机列 MYSQL 不同的?

java - log4j 与 oracle 给出异常 - 无效的 sql 语句

sql - SQL 中的 ddmmyyyy 到 sql 日期时间

sql - 显示所有表的所有数据

sql - 嵌套查询出错