我有查詢不同的表,並返回類似領域的兩個SQL查詢:SQL - 加入兩個查詢高效地協同
User - Role - Category - Points
和
User - Role - Category - Target
我的查詢是這樣的:
select
acs.UserID,
acs.RoleID,
acs.CategoryID,
sum(acs.Points)
from acs
和
select
tb.UserID,
tb.RoleID,
tb.CategoryID,
sum(
(
(DATEDIFF(dd, (case when @start >= tb.StartDate then @start else tb.StartDate end), (case when @end <= tb.EndDate then @end else tb.EndDate end)) + 1)
) * tb.dailyMed
) as Target
from tb
我想什麼直到結束是這樣的:
User - Role - Category - Points - Target
每個單獨的查詢需要不到1秒的運行,但是當我嘗試使用內把它們結合起來加入吧接管跑3分鐘。
我希望有這樣做的更有效的方式,但我似乎無法找到一個。
*編輯 我內在的加入看起來像這樣
select
acs.UserID,
acs.RoleID,
acs.CategoryID,
sum(acs.Points),
t.Target
from
dbo.ActualCacheSale acs
inner join
(select
tb.UserID,
tb.RoleID,
tb.CategoryID,
sum(
(
(DATEDIFF(dd, (case when @start >= tb.StartDate then @start else tb.StartDate end), (case when @end <= tb.EndDate then @end else tb.EndDate end)) + 1)
) * tb.dailyMed
) as Target
from
dbo.TargetBucket tb
) t on
t.UserID = acs.UserID and
t.RoleID = acs.RoleID and
t.CategoryID = acs.CategoryID
告訴我們您的內部聯接查詢 –
你能告訴你的INNER JOIN語句? – Guido
添加了內部連接 – Rick