首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RowVersion与性能

RowVersion与性能
EN

Stack Overflow用户
提问于 2011-10-03 03:40:13
回答 1查看 3.9K关注 0票数 9

我想知道在Server数据库中的表中添加一个行版本列是否对性能有影响?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-03 05:48:43

没有多少性能影响,行版本只是旧时间戳数据类型的一个新名称。因此,您的数据库将需要存储额外的二进制字段。当您尝试对这些数据执行查询时,您的性能会受到更大的影响,例如:

代码语言:javascript
复制
SELECT *
FROM MyTable
WHERE rowVersion > @rowVersion

这是自上次@rowVersion以来常用的获取更新项列表的方法。这看起来很好,对于一个有10,000行行的表来说,这是非常完美的。但是,当您到达100万行时,您将很快发现它一直在执行表扫描,而性能的影响是因为您的表现在不再完全适合服务器的RAM。

这是rowVersion列遇到的常见问题,它不是自己神奇地索引的。此外,当索引rowVersion列时,您必须接受索引随着时间的推移通常会变得非常零散,因为新更新的值总是位于索引的底部,在更新现有项时会在整个索引中留下空白。

编辑:如果您不使用rowVersion字段检查更新的项,而是使用它来保持一致性,以确保自上次读取以来记录没有更新,那么这将是一个完全可以接受的使用,不会产生影响。

代码语言:javascript
复制
UPDATE MyTable SET MyField = ' @myField
WHERE Key = @key AND rowVersion = @rowVersion
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7630835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档