sql-server update随机更新

本帖最后由 祥子刘 于 2015-10-20 11:46 编辑

在sql-server环境下用 update 更新数据 top(n) 微软说的是n是走表中随机取出n行更新,但是我在操作中始终无法做到随机,比如说top(5),这样也就更新从上往下数 5 行符合 where 的数据行,按微软给出的我的理解是在表中随机找出 5 行符合 where 的数据行更新

https://technet.microsoft.com/zh-CN/library/ms180971

这个是微软给出的

参与8

1同行回答

luckyrandomluckyrandom数据库管理员iDBApp
很多人都有个误解Update Top (5) 是会选择5条记录更新,就像查询 Select Top (5) 一样,只是查询5条在单用户测试下,通常是按聚集索引从前往后更新5条比如ID是聚集键,若存1~1亿记录,通常是更新1~5条但在多用户环境下,可能别人已经把 9KW~1亿条读在缓存里了,那么你再Select Top (5) 未...显示全部

很多人都有个误解

Update Top (5) 是会选择5条记录更新,就像查询 Select Top (5) 一样,只是查询5条

在单用户测试下,通常是按聚集索引从前往后更新5条

比如ID是聚集键,若存1~1亿记录,通常是更新1~5条

但在多用户环境下,可能别人已经把 9KW~1亿条读在缓存里了,那么你再Select Top (5) 未加Order By or Update,那么对象很可能就是9KW~9KW+5这几条

所以这叫随机,换个方式说不保证顺序执行

不是很多人想像中的随机,概念有点不同


若要通常概念中的随机,自己写个SP去执行,先产生几个随机数,再更ID值等于那几个随机数的记录

收起
IT咨询服务 · 2015-10-20
浏览1588

提问者

祥子刘
其它ABC

问题状态

  • 发布时间:2015-10-20
  • 关注会员:3 人
  • 问题浏览:2631
  • 最近回答:2015-10-20
  • X社区推广