sql 随机抽取数据

冬日 2011-07-05 04:03:00
查了好多资料,都是newid()。可是newid()太慢了,需要等好几分钟
...全文
592 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
gu000112 2012-03-09
  • 打赏
  • 举报
回复
同问这个问题
冬日 2011-07-11
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 dongrizhixue 的回复:]
Assembly code

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO


CREATE proc [dbo].[proc_CustomPaging]
@L1 nvarchar(30)
as
select top 20 * from table where L1 = @L1


GO




这是存储……
[/Quote]
这就是我的存储过程,够简单吧,可是加入newid()还是需要3分钟
冬日 2011-07-09
  • 打赏
  • 举报
回复
继续顶起
haojuntu 2011-07-09
  • 打赏
  • 举报
回复
newid()有那么慢吗?会不会是其它原因导致的呢。。
laowang134 2011-07-09
  • 打赏
  • 举报
回复
还是感觉通过newid()插入不重复的随机数,最好order by出来是最为科学的。。如果自己写个算法每条插入随机数,结果恐怕更慢!
冬日 2011-07-09
  • 打赏
  • 举报
回复

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO


CREATE proc [dbo].[proc_CustomPaging]
@L1 nvarchar(30)
as
select top 20 * from table where L1 = @L1


GO



这是存储过程,想一直在这里操作的,数据共有七百万行
冬日 2011-07-09
  • 打赏
  • 举报
回复
还是不行啊,我试图从已查询出的数据里随机抽取20条的,但不知道怎么操作
冬日 2011-07-09
  • 打赏
  • 举报
回复
还没有着手做这个随机抽取数据,但先收集方法,所以继续顶
luo6620378xu 2011-07-09
  • 打赏
  • 举报
回复
顶顶,赚赚积分!
qq346127416 2011-07-08
  • 打赏
  • 举报
回复
select top 1 * from table order by newid()
田想兵 2011-07-08
  • 打赏
  • 举报
回复
newid() 是最快的,其他更慢
冬日 2011-07-08
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 truecoffeefox 的回复:]
C# code
private static int GetNewSeed()
{
byte[] rndBytes = new byte[4];
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
rng.GetBytes(……
[/Quote]
我去试试
冬日 2011-07-08
  • 打赏
  • 举报
回复
我都自己试过了newid()在七百万行中随机抽取会慢的要死,哦对了,我好像忘说了,我还必须往随机抽取的sql语句里插入查询条件
冬日 2011-07-07
  • 打赏
  • 举报
回复
没搞懂那个在用C#生成一组随机数,然后按id或行号把记录取出来。
kingdom_0 2011-07-07
  • 打赏
  • 举报
回复
取出数据库中的数据id,在后台本地随机读取这些id,sql根据这个id查找数据
truecoffeefox 2011-07-07
  • 打赏
  • 举报
回复
那就用随机生成要取的数据id或者其它形式的pk再查询
truecoffeefox 2011-07-07
  • 打赏
  • 举报
回复
即使不是int作为id也可以在根据算法确定出一条数据来
truecoffeefox 2011-07-07
  • 打赏
  • 举报
回复
  private static int GetNewSeed()
{
byte[] rndBytes = new byte[4];
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
rng.GetBytes(rndBytes);
return BitConverter.ToInt32(rndBytes, 0);
}

然后通过
System.Random RandomObj = new System.Random(GetNewSeed());
RandomObj.Next(minvalue,maxvalue)获取随机的int,然后取出对应的那条记录呗
冬日 2011-07-07
  • 打赏
  • 举报
回复
自己顶一下,继续求随机抽取数据,没搞懂那个用C#生成一组随机数,然后按id或行号把记录取出来到底怎么办?求一个链接试试
子夜__ 2011-07-05
  • 打赏
  • 举报
回复
分区域去取? 取多少个?
加载更多回复(8)

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧