简单的SQL Server更新查询需要15分钟以上

时间:2018-11-13 19:20:51

标签: sql-server

我有一个SQL Server数据库表,其中包含5列和3行。架构说明:

  • "scripts": { "build": "del-cli lib && tsc", "devinstall": "npm run build && npm run _install -- node_modules/husky && node scripts/dev-fix-path", "devuninstall": "npm run build && npm run preuninstall -- node_modules/husky", "fix": "npm run lint -- --fix", "install": "node husky install", "lint": "tslint 'src/**/*.ts'", "postpublish": "pinst --disable", "postversion": "git push && git push --tags", "prepublishOnly": "npm run test && npm run build && pinst --enable && pkg-ok", "preuninstall": "node husky uninstall", "test": "npm run lint && jest", "version": "jest -u && git add -A src/installer/__tests__/__snapshots__" } cId)是表的ID,它不是自动数字的,但现在其值为1-2-3。
  • intcIdFoot)是来自另一个具有4行的静态数据表的外键。
  • intcwId)是表中有很多列但只有一行的表中的另一个外键。
  • 2个类型为int的描述列

尽管varchar(MAX)cIdFoot都是外键,因为它们在此表中几乎是空表,因此当前未将其创建为外键。

我的更新是这样:

cwId

这个简单的SQL脚本要花6分钟以上,并且该表只有3行。

执行选择似乎还可以,但是当我尝试更新时,它会花费很多时间,并且通常会超时。我已经看到在日志-> .ldf文件中似乎没有变大,可能是它已损坏或创建得不好。当更新或插入时,具有超过10000行的更大的表可以正常工作。

任何帮助将不胜感激。

执行计划:The Execution plan

enter image description here

1 个答案:

答案 0 :(得分:3)

根据您的评论,SPID 85阻止了您的更新查询。在此过程完成之前,您的更新将不会完成,或者会释放更新所需要的锁。

如果您杀死SPID 85,将运行更新,但是您需要弄清楚此过程在做什么以及为什么在该表上持有锁。在修复它之前,不可能停止在此表上获得锁(从而阻止更新)。