【发布时间】:2014-10-30 11:17:24
【问题描述】:
这是我的查询
select u.FirstName as AssignedBy, u1.FirstName as RespondedBy, u2.FirstName as ClosedBy
from Messages M
left join User u on isnull(M.AssignedBy, 0) = u.UserId
left join User u1 on isnull(M.RespondedBy, 0) = u1.UserId
left join User u2 on isnull(M.closedby, 0) = u2.UserId
是否可以在单个查询中编写连接?我想提高查询的性能,所以我不想进行 3 个连接,所以在一个连接中尝试它,因为我的 User 表有很多记录。我在两个表上都有所有索引。我试过了
select u.FirstName as AssignedBy, u.FirstName as RespondedBy, u.FirstName as ClosedBy
from Messages M
left join User u on
(isnull(M.AssignedBy, 0) = u.UserId or isnull(M.RespondedBy, 0) = u.UserId or isnull(M.closedby, 0) = u.UserId)
但是这个查询给出了不正确的输出,因为我有很多行在所有三个连接列中都有记录。有没有其他方法可以达到同样的效果?
【问题讨论】:
-
你的表现有多差?您可以使用查询的执行计划来编辑您的问题吗?
标签: sql sql-server join