我的数据库中有大约500K行。我想从1行到5000行获取随机行,其限制结果限制需要为100。
我目前的查询如下
'SELECT * FROM user where status='0' LIMIT 10,100'
我应该更改或使用什么来获取有限的随机行,这样我可以在没有内存消耗的情况下获得快速结果?
由于
答案 0 :(得分:3)
数据库表是无序集合,因此您必须提供一些订单才能获得1到5000行(否则这些行将是1到5000行),可能基于用户ID。
一旦你有了这个,你可以限制子查询中的行并按rand()
排序,并得到前100个像这样:
select *
from (select
*
from user
where status = 0
order by /* set of columns, may be user_id*/
limit 1, 5000
) t order by rand() limit 100;
答案 1 :(得分:0)
此查询为您提供5000k行
中的任意100个随机行rdp