更新语句运行时间过长与否

O.O*_*O.O 7 sql sql-server sql-server-2008

我刚开始使用这么多数据(2000万行)而且我不知道在查询持续时间方面我应该期待什么:

update table set field = '1234'  
Run Code Online (Sandbox Code Playgroud)

现场没有索引.这个声明花了25分钟.数据库设置为"简单恢复".25分钟似乎太长了吗?表有9列,小数据类型<50 varchar.

Rem*_*anu 12

如果您在一次交易中更新了20M行,那么您的时间完全由您的IO子系统驱动:您拥有什么类型的驱动器,什么是磁盘文件布局等.如果您在raid 10中有40个轴,其中包含4个平衡文件和单独的类似文件对于日志的电池然后结果令人担忧地缓慢.如果您使用单个MDF在单个消费者质量5000rpm HDD上与LDF共享主轴进行测试,那么您的时间会非常快.

  • 告诉标志将是"平均".磁盘队列长度`(每个主轴> 2)和`平均值.秒/转移`(> 10ms)性能计数器.http://msdn.microsoft.com/en-us/library/ms175903.aspx (3认同)
  • @ subt13:即使在简单模式下,事务也必须记录每一行的更改,以便它可以进行回滚.20M行 - > 20M更改为20M撤消操作保留的日志+空间中的记录,它需要日志空间,并且每个位都必须写入磁盘.只有当您有多个事务时,恢复模型才会发挥作用,但无论恢复模型如何,它都不会使事情变得更快.对于某些*insert*操作,只有批量*可能*更快,永远不会更新. (2认同)