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

奋斗的蚁族7

奋斗的蚁族7

2016-02-19 16:03

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

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

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

(本文来源于图老师网站,更多请访问http://m.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://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
Sqlserver中百万数据随机提取的问题

随机提取Access/SqlServer数据库中的10条记录的SQL语句

Web开发
随机提取Access/SqlServer数据库中的10条记录的SQL语句

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

MySQL随机选取数据

编程语言 网络编程
MySQL随机选取数据

轻松应付百万数据的数据分页存储过程

编程语言 网络编程
轻松应付百万数据的数据分页存储过程

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

MySQL取出随机数据

编程语言 网络编程
MySQL取出随机数据

复制SqlServer数据库的方法

编程语言 网络编程
复制SqlServer数据库的方法

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

SQL Server 2008 中数据收集器和管理数据仓库

SQL Server 2008 中数据收集器和管理数据仓库

从JavaScript 到 JQuery (1)学习小结

从JavaScript 到 JQuery (1)学习小结
下拉加载更多内容 ↓