我想知道在Server数据库中的表中添加一个行版本列是否对性能有影响?
发布于 2011-10-03 05:48:43
没有多少性能影响,行版本只是旧时间戳数据类型的一个新名称。因此,您的数据库将需要存储额外的二进制字段。当您尝试对这些数据执行查询时,您的性能会受到更大的影响,例如:
SELECT *
FROM MyTable
WHERE rowVersion > @rowVersion这是自上次@rowVersion以来常用的获取更新项列表的方法。这看起来很好,对于一个有10,000行行的表来说,这是非常完美的。但是,当您到达100万行时,您将很快发现它一直在执行表扫描,而性能的影响是因为您的表现在不再完全适合服务器的RAM。
这是rowVersion列遇到的常见问题,它不是自己神奇地索引的。此外,当索引rowVersion列时,您必须接受索引随着时间的推移通常会变得非常零散,因为新更新的值总是位于索引的底部,在更新现有项时会在整个索引中留下空白。
编辑:如果您不使用rowVersion字段检查更新的项,而是使用它来保持一致性,以确保自上次读取以来记录没有更新,那么这将是一个完全可以接受的使用,不会产生影响。
UPDATE MyTable SET MyField = ' @myField
WHERE Key = @key AND rowVersion = @rowVersionhttps://stackoverflow.com/questions/7630835
复制相似问题