相关疑难解决方法(0)

JOIN或WHERE中的条件

将条件放入JOIN子句与WHERE子句之间是否存在差异(性能,最佳实践等)?

例如...

-- Condition in JOIN
SELECT *
FROM dbo.Customers AS CUS
INNER JOIN dbo.Orders AS ORD 
ON CUS.CustomerID = ORD.CustomerID
AND CUS.FirstName = 'John'

-- Condition in WHERE
SELECT *
FROM dbo.Customers AS CUS
INNER JOIN dbo.Orders AS ORD 
ON CUS.CustomerID = ORD.CustomerID
WHERE CUS.FirstName = 'John'
Run Code Online (Sandbox Code Playgroud)

您更喜欢哪个(也许是为什么)?

sql performance

170
推荐指数
4
解决办法
20万
查看次数

在WHERE和FROM中添加过滤器

所以我知道在查询的WHERE子句中添加过滤条件是一种很好的编程习惯,这样可以最大限度地减少连接中返回的行数,但是我们如何决定是否应该在WHERE中添加过滤器而不是FROM?例如:

SELECT a.ColA, a.ColB, a.ColC, b.ColD, b.ColE
FROM TblA a INNER JOIN TblB b
On a.ColA = b.ColD
AND a.ColA = 'X' 
AND a.ColB = 'Y'
WHERE b.ColD = 'ABC'
Run Code Online (Sandbox Code Playgroud)

在这个查询中,如果我在AND子句而不是WHERE中添加b.ColD怎么办?这会不会使查询更有效率?我知道两种方法的结果有时会有所不同,但我不知道为什么?

谢谢.

sql t-sql sql-server performance

5
推荐指数
2
解决办法
186
查看次数

标签 统计

performance ×2

sql ×2

sql-server ×1

t-sql ×1