我有一個存儲過程,在WHILE
循環中運行幾個查詢,尤其是這些查詢的時間比SP的其他指數長得多,這大大地降低了我的性能。如何用IN替換INNER JOIN?
我讀過幾處使用IN
與INNER JOIN
可以提高性能,如果你只是從第一個表中拉列,這正是我正在做的。
但問題是,我沒有第一個線索,我可以用IN
子句替換我的INNER JOIN
。我得到的概念IN
的語法與INNER JOIN
有很大不同,但我不知道從哪裏開始。
作爲一個腳註,SQL不是我的強項。所有的建議非常感謝。
下面是其中一個查詢。它們在邏輯上都非常相似。
SELECT @CurrentKey = riv.Key
FROM ResourceInfo_VW riv
INNER JOIN (SELECT Track,
Code,
[Language]
FROM ResourceInfo_VW
WHERE Key = @CurrentKey) AS riv2
ON riv.Track = riv2.Track
AND riv.Code = riv2.Code
AND riv.[Language] = riv2.[Language]
INNER JOIN UserGroupCourseCatalog_VW ugcc
ON riv.Key = ugcc.Key
WHERE riv.[Type] = 'a'
AND ugcc.UserGroupKey = @UserGroupKey
如果您指定了列,SQL Server會知道您只從第一個表中提取列。如果你使用SELECT *就停止這樣做。 IN不會奇蹟般地改變連接的性能。 –
它可能只是WHILE循環本身會減慢查詢速度。 –
我不好,夥計們。代碼已經啓動。 – Kehlan