SQLServer newID()

Posted 筱筱的春天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLServer newID()相关的知识,希望对你有一定的参考价值。

一直想找个除了newid() 外高效取随机数的方法, 有点遗憾,木有找到,谁有除了newid()以外更高效的 请留言,谢谢

从A表随机取2条记录,用SELECT TOP 10 * FROM ywle order by newid()
order by 一般是根据某一字段排序,newid()的返回值 是uniqueidentifier ,order by newid()随机选取记录是如何进行的
newid()在扫描每条记录的时候都生成一个值, 而生成的值是随机的, 没有大小写顺序. 所以最终结果再按这个排序, 排序的结果当然就是无序的了
或者
select   top   10   *,newid()   as   Random   from   ywle where   ywlename=\'001\'   ordey   by   Random
下者效率要高些
因为newid()返回的是uniqueidentifier类型的唯一值。newid()每次产生的值都不一样,那么根据这样的值进行排序,每次的结果 也是不一样的。
原理是 把所有的ID出取然后用随机函数取出其中一个,然后用这个随机取到的ID去数据库里再取出记录,所有代价有点大。

 

 

from: https://www.cnblogs.com/wuming/archive/2010/02/24/1672906.html

 

以上是关于SQLServer newID()的主要内容,如果未能解决你的问题,请参考以下文章

SQLServer : 几个特殊函数(RAND,CHECKSUM, NEWID)

SqlServer怎么获得生成的newid()的值

关于sqlserve2000和sqlserver2005以后版本配置连接池的一些思路

sqlserve复制

使用newID创建函数()

SQLSERVER如何使用递增排序的GUID做主键