[英]MS SQL Server 2008 - UPDATE a large database
我只想UPDATE
大TABLE
一个数据,什么是最有效的方法?
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.