MYSQL 从百W级数据表中随机查询10条记录,主键ID是非连续的长整型的,请问有什么高效的查询SQL语句吗?

ID是这样的:3059205917277944494,非连续的,非自增的
2025-02-14 06:28:27
推荐回答(1个)
回答1:

首先程序产生一个随机数,然后大于这个值的取10条
SELECT * FROM  tablename WHERE id>xxx    LIMIT 10    

如果想分开的,那就多产生几个随机数x1 x2 x3 
SELECT * FROM  tablename WHERE id>x1    LIMIT 10 
SELECT * FROM  tablename WHERE id>x2    LIMIT 10    
SELECT * FROM  tablename WHERE id>x2    LIMIT 10    

然后得到的记录再选10条


如果有其他索引的话也可以随机一个大于或小于这个
select * from tablename where uid>x1 and id>xxx limit 10