首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在单个查询中将一个表的多个列连接到另一个表的单个列

在单个查询中将一个表的多个列连接到另一个表的单个列
EN

Stack Overflow用户
提问于 2014-10-30 19:17:25
回答 2查看 1.9K关注 0票数 0

这是我的问题

代码语言:javascript
运行
复制
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个连接,所以在一个连接中尝试它,因为我的用户表有很多记录。我有这两个表上的所有索引。我试过了

代码语言:javascript
运行
复制
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)

但是这个查询给出了不正确的输出,因为我有很多行,这些行在所有三个连接列中都有记录。有没有其他方法可以达到同样的效果呢?

EN

Stack Overflow用户

发布于 2014-10-30 19:21:06

您的原始查询看起来很好。如果你有一个关于User(UserId)或者更好的User(UserId, FirstName)的索引,那么我认为它的性能应该是不错的。

join条件下使用or通常会使性能变得更差而不是更好。

您的问题可能很简单,即Messages表的大小。返回非常大的结果集可能需要一段时间。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26651574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档