我有一个存储过程,它在一个WHILE
循环中运行几个查询,特别是这些查询比 SP 的其余部分花费的时间呈指数增长,大大降低了我的性能。
我在一些地方读到,如果您只从第一个表中提取列,则使用 an IN
vs. anINNER JOIN
可以提高性能,这正是我正在做的。
然而,问题是我对如何INNER JOIN
用IN
子句替换 my 没有第一个线索。我认为 an 的语法与 anIN
非常不同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