繁体   English   中英

MS SQL Server 2008-更新大型数据库

[英]MS SQL Server 2008 - UPDATE a large database

我只想UPDATETABLE一个数据,什么是最有效的方法?

  SELECT * from TABLE WHERE status='N'
  UPDATE TABLE set status='Y' where status='N'

我认为桌子很大。 然后可能是您应该在表上创建临时/永久过滤索引

CREATE NONCLUSTERED INDEX Temp_Table_Status
ON dbname.dbo.Table(Status)
WHERE Status='N'
GO

否则您的查询是正确的。

UPDATE TABLE set status='Y' where status='N'

“最高效”很像“最美丽”。 它没有绝对的意义。 您如何衡量“效率”。 IMO,到目前为止,最有效的机制是使用单个更新查询。 您的查询实际上应写为避免无意义的更新:

update table set col = 'Y' where col <> 'Y';

where子句将使其“最有效”。 请注意,您可能需要在where子句中考虑空值-了解您的数据。 有些人可能会争辩说要批量更新以节省空间。 如果定期执行此操作,则通常应该在数据库中具有足够的空间并进行日志记录,而不必尝试无意义地管理磁盘空间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM