Sqlserver中百万数据随机提取的问题

2016-02-19 16:03 77 1 收藏

下面这个Sqlserver中百万数据随机提取的问题教程由图老师小编精心推荐选出,过程简单易学超容易上手,喜欢就要赶紧get起来哦!

【 tulaoshi.com - 编程语言 】

  这个问题来自论坛提问。很多人都知道类似下面的语句

select top 2000 * from tb order by newid()
但是在海量数据下,它的性能是无法忍受的。这里我用一个变通的办法来实现性能的提升,思路为:表必须存在一个guid类型的主键或者索引列,然后用这个列去like一个随机字符串,随机字符串必须为guid规定的字符集合(数字+A到Z)。下面例子只用到了数字,并且只用了4个数字来匹配,你可以更改like后面的语句来调整这个策略。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

--生成测试环境
use master
go
create table test(id uniqueidentifier,name varchar(100))
insert into test select newid(),name from syscolumns
--随机提取
select top 10 * from test where id like
char(48+abs(checksum(newid())%10))+ '%'+
char(48+abs(checksum(newid())%10))+ '%'+
char(48+abs(checksum(newid())%10))+ '%'+
char(48+abs(checksum(newid())%10))+'%'
--删除测试环境
drop table test
我测试了300万数据提取2000条,耗时大约1秒左右。另外提醒一点,索引对like语句是有效的。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

来源:http://www.tulaoshi.com/n/20160219/1610985.html

延伸阅读
第一步:先打开一个需要提取空格前后数据的文件。   第二步:数据/分列,然后显示文本分列向导,选择分隔符号,直接点击下一步。   第三步:勾选好空格,再点击下一步。   第四步:点击目标区域右边的标符。   第五步...
标签: 美容 美容方法
肌肤总是有这样那样的问题,只有正确的了解问题的起因,才能根本的解决问题的来源,图老师图老师小编搜罗了一些mm比较在意的问题和解决办法,不妨来参考一下! 1.怎Tulaoshi.Com样处理混合型皮肤?我的面颊很干,t部位很油,用润肤霜容易起面疱? 首先用温和的洗面膏把脸洗干净,用化妆棉沾取含有水杨酸或乙醇酸的收缩水擦拭面部干燥...
标签: SQLServer
死锁,简而言之,两个或者多个trans,同时请求对方正在请求的某个对象,导致双方互相等待。简单的例子如下:    trans1                                 &...
一、 问题现象 在执行 SQL Server分布式事务时,在SQL Server 2005下收到如下错误: 消息 7391,级别 16,状态 2,过程 xxxxx,第 16 行 无法执行该操作,因为链接服务器 "xxxxx" 的 OLE DB 访问接口 "SQLNCLI" 无法启动分布式事务。 在SQL Server 2000下收到如下错误: 该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动...
 在软件开发过程中经常会遇到数据库升迁的问题,原因比较多,如acsess访问速度比sql server慢、删除数据记录后access会留下空档,文件越来越大(也可用压缩修复的方式减小文件大小,但太麻烦),访问速度越来越慢,甚至会数据库损坏,损坏得比较轻的可以找第三方工具来修复,便严重时会导致数据库无法修复,或修复后数据记录会损坏。所以我们...

经验教程

98

收藏

27
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部