我有这样的 Sql 查询:
UPDATE tProfile SET LastActivity=@DateTimeNow WHERE UserId=@UserId AND Id IN ({0})
其中 {0} - 它是一串 id,例如:
UPDATE tProfile SET LastActivity=@DateTimeNow WHERE UserId=@UserId AND Id IN (1155,1684,41368)
而且这个字符串可以有几千个 Id。
我如何才能更轻松地执行此查询,因为此查询使用 100% CPU。
我想知道一些替代品。
最佳答案
如果您的 ID 是逗号分隔列表,那么您可以使用 split function (UDF) 将它们插入到表变量中,然后更新。
DECLARE @IdTable TABLE (Id INT)
INSERT INTO @IdTable SELECT Id FROM dbo.SplitFunction(@IdList,',')
UPDATE p SET p.LastActivity = @DateTimeNow
FROM tProfile p INNER JOIN @IdTable i
ON p.Id = i.Id
WHERE p.UserId = @UserId
关于c# - MSSQL 快速更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13306820/