在sql-server环境下用 update 更新数据 top(n) 微软说的是n是走表中随机取出n行更新,但是我在操作中始终无法做到随机,比如说top(5),这样也就更新从上往下数 5 行符合 where 的数据行,按微软给出的我的理解是在表中随机找出 5 行符合 where 的数据行更新
https://technet.microsoft.com/zh-CN/library/ms180971
这个是微软给出的
很多人都有个误解
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值等于那几个随机数的记录