我有类似下面的两个表:TSQL加入替换工会
档案表
Id | ServiceId | AccessLevel ---------------------------- 1 | 123 | 1 2 | 123 | 1 3 | 123 | 2
附加档案表(简档是一个外键Profile.Id)
Id | ProfileId | AccessLevel ---------------------------- 1 | 1 | 2 2 | 1 | 3 3 | 2 | 2 4 | 3 | 3
我目前有一个视图,在这两个表上做一个UNION ALL,以便我可以查询它“简档= 1”,得到以下结果集:
ProfileId | ServiceId | AccessLevel ----------------------------------- 1 | 123 | 1 1 | 123 | 2 1 | 123 | 3
这似乎是很慢的。
所以,我想知道如果/如何我可以得到这个相同的结果集使用单个查询,但我正在努力找出一种方法来做到这一点。
任何帮助,将不胜感激。视图后面
查询:
SELECT Id, ServiceId, AccessLevel FROM Profile
UNION ALL
SELECT P.Id, P.ServiceId, A.AccessLevel
FROM Profile P
INNER JOIN AdditionalProfile A ON A.ProfileId = P.Id
每个表包含约160,000条记录。
需要全部外部连接(如果有任何表是空的)。我猜想联盟全部更好...你确定它很慢?!? – jarlh 2015-03-03 11:55:27
是啊,它似乎是 – kmcoulson 2015-03-03 12:00:27
如果您的查询和查询计划,查询计划数量等查询缓慢,没有人可以帮助您根据所提供的信息对其进行优化。 – 2015-03-03 12:43:36