c# - MSSQL 快速更新

标签 c# sql-server optimization query-optimization

我有这样的 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/

相关文章:

c# - 重复初始化 Clearscript V8 引擎时内存不足(GC 问题?)

ruby - Dashing 框架未连接到数据库

sql-server - 如何在 SSDT 项目中包含自定义数据迁移和静态/引用数据?

sql-server - Azure 中是否有可用于迁移 MS Access 32 位数据库及其工件的服务?

C#:Socket.ReceiveAsync 和部分接收

c# - JsonConvert.DeserializeObject 到 en-US 文化

c# - 基于 web api 2 属性的路由生成

javascript - 这个JS block 怎么会人手不足呢? (JS 复习)

两个着色器之间频繁交换的 OpenGL 性能开销

optimization - 在GLSL中选择cubmap面的快速方法