我有一個存儲過程,運行速度很慢。因此,我想在單獨的視圖中提取一些查詢。加入表變量與加入視圖
我的代碼看起來是這樣的:
DECLARE @tmpTable TABLE(..)
INSERT INTO @tmpTable (..) *query* (returns 3000 rows)
Select ... from table1
inner join table2
inner join table3
inner join @tmpTable
...
然後我提取物(複製粘貼)*查詢*並把它放在一個觀點 - 即vView。
那麼這樣做會給我不同的結果:
Select ... from table1
inner join table2
inner join table3
inner join vView
...
爲什麼?我可以看到vView和@tmpTable都返回了3000行,所以它們應該匹配(也做一個除查詢外的檢查)。
任何意見將大大appriciated因爲我覺得很堅持了這個..
編輯:
這是用於獲取結果的完整查詢(使用@tmpTable或vView給了我不同的結果,雖然看起來是一樣的):
select dep.sid as depsid, dep.[name], COUNT(b.sid) as possiblelogins, count(ls.clientsid) as logins
from department dep
inner join relationship r on dep.sid=r.primarysid and r.relationshiptypeid=27 and r.validto is null
inner join [user] u on r.secondarysid=u.sid
inner join relationship r2 on u.sid=r2.secondarysid and r2.validto is null and r2.relationshiptypeid in (1,37)
inner join client c on r2.primarysid=c.sid
inner join ***@tmpTable or vView*** b on b.sid = c.sid
left outer join (select distinct clientsid from logonstatistics) as ls on b.sid=ls.clientsid
GROUP BY dep.sid, dep.[name],dep.isdepartment
HAVING dep.isdepartment=1
請問您能提供更多的代碼和信息嗎? @tmpTable查詢中是否存在WHERE? JOIN不同?它是「更多行」還是「重複」? – gbn 2011-05-13 08:31:35
我添加了選擇本身,但建立@tmpTable和vView的查詢是一個沉重的問題,它包含內部聯接,聯合等,但結果集是不同的。 – femseks 2011-05-13 08:40:10
和INSERT INTO @tmpTable代碼的定義好嗎? – gbn 2011-05-13 09:02:56