20 个解决方案
#1
用order by本來就是速度變慢的,而且你的數據量太大了,所以我覺得你的表中應該要用到的字段才列出來,不應該用*來代替
#2
插入一个索引,根据你的表要求,是聚集还就非聚集
#3
to 海洋空间:
我只选择其中的PK字段就可以了,没有用*
to陈良灯:
具体点,不明白。
我只选择其中的PK字段就可以了,没有用*
to陈良灯:
具体点,不明白。
#4
up,不明白
#5
没有高手?
#6
首先要在数据表中 建立 自动递增的 长整数字段 NID 并设置索引
查询时 编写一个 过程 传递 需要选取的记录个数 如1000
1.产生 1 个随机数 RND 范围 从 1 - 数据表的记录总数并不重复
2.select * into 新表 from 源表 Where NID=随机数
循环以上过程直到到达所需 记录数
3.select * from 新表 就是所需的随机记录
提升效率的关键:避免在全表中作排序操作
查询时 编写一个 过程 传递 需要选取的记录个数 如1000
1.产生 1 个随机数 RND 范围 从 1 - 数据表的记录总数并不重复
2.select * into 新表 from 源表 Where NID=随机数
循环以上过程直到到达所需 记录数
3.select * from 新表 就是所需的随机记录
提升效率的关键:避免在全表中作排序操作
#7
1. order by 耗时
2. newid() 也耗时
所以加起来速度就当然慢了
2. newid() 也耗时
所以加起来速度就当然慢了
#8
用 zlt982001(zhangle) 说的随机数是一个不错的办法,这样不需要排序
只是随机性差一点
只是随机性差一点
#9
up
#10
MARK
#11
up
#12
newid()是起什么作用的呀
#13
zlt982001(zhangle)的办法是提高了速度,但需要新增一个字段,
楼主能不能把表结构贴出来,看看有没有什么其他办法
楼主能不能把表结构贴出来,看看有没有什么其他办法
#14
学习
#15
用随机数的办法,在表中新增加一个字段
#16
尽量不用*
#17
给表加个递增的序列号
随机抽取序列号取数据
当然,取数据时只提取有用的字段!不用*
随机抽取序列号取数据
当然,取数据时只提取有用的字段!不用*
#18
up
#19
order by newID()
其实会先生成个中间表,再从中间表里面读取数据返回结果~~~这样的话,表记录很大时,就不适宜用 order by newid()了
其实会先生成个中间表,再从中间表里面读取数据返回结果~~~这样的话,表记录很大时,就不适宜用 order by newid()了
#20
你表有标识列ID,可以结合rand函数来实行列ID取随机记录
#21
#1
用order by本來就是速度變慢的,而且你的數據量太大了,所以我覺得你的表中應該要用到的字段才列出來,不應該用*來代替
#2
插入一个索引,根据你的表要求,是聚集还就非聚集
#3
to 海洋空间:
我只选择其中的PK字段就可以了,没有用*
to陈良灯:
具体点,不明白。
我只选择其中的PK字段就可以了,没有用*
to陈良灯:
具体点,不明白。
#4
up,不明白
#5
没有高手?
#6
首先要在数据表中 建立 自动递增的 长整数字段 NID 并设置索引
查询时 编写一个 过程 传递 需要选取的记录个数 如1000
1.产生 1 个随机数 RND 范围 从 1 - 数据表的记录总数并不重复
2.select * into 新表 from 源表 Where NID=随机数
循环以上过程直到到达所需 记录数
3.select * from 新表 就是所需的随机记录
提升效率的关键:避免在全表中作排序操作
查询时 编写一个 过程 传递 需要选取的记录个数 如1000
1.产生 1 个随机数 RND 范围 从 1 - 数据表的记录总数并不重复
2.select * into 新表 from 源表 Where NID=随机数
循环以上过程直到到达所需 记录数
3.select * from 新表 就是所需的随机记录
提升效率的关键:避免在全表中作排序操作
#7
1. order by 耗时
2. newid() 也耗时
所以加起来速度就当然慢了
2. newid() 也耗时
所以加起来速度就当然慢了
#8
用 zlt982001(zhangle) 说的随机数是一个不错的办法,这样不需要排序
只是随机性差一点
只是随机性差一点
#9
up
#10
MARK
#11
up
#12
newid()是起什么作用的呀
#13
zlt982001(zhangle)的办法是提高了速度,但需要新增一个字段,
楼主能不能把表结构贴出来,看看有没有什么其他办法
楼主能不能把表结构贴出来,看看有没有什么其他办法
#14
学习
#15
用随机数的办法,在表中新增加一个字段
#16
尽量不用*
#17
给表加个递增的序列号
随机抽取序列号取数据
当然,取数据时只提取有用的字段!不用*
随机抽取序列号取数据
当然,取数据时只提取有用的字段!不用*
#18
up
#19
order by newID()
其实会先生成个中间表,再从中间表里面读取数据返回结果~~~这样的话,表记录很大时,就不适宜用 order by newid()了
其实会先生成个中间表,再从中间表里面读取数据返回结果~~~这样的话,表记录很大时,就不适宜用 order by newid()了
#20
你表有标识列ID,可以结合rand函数来实行列ID取随机记录