Mysql 来自大查询结果的随机行

Mysql 来自大查询结果的随机行,mysql,random,row,Mysql,Random,Row,我需要从使用SQL select检索的查询结果中获取索引列上的1-2行,而不获取整个记录集 例如,我将使用查询检索10000条记录 SELECT * FROM table WHERE field 1>1 AND field1 < 10 但我只需要从这个查询中随机抽取一行,这与我的数据库的高负载有关 我可以用 SELECT * FROM table WHERE field 1>1 AND field1 < 10 LIMIT 100, 1 但我不知道记录numebr是否使

我需要从使用SQL select检索的查询结果中获取索引列上的1-2行,而不获取整个记录集

例如,我将使用查询检索10000条记录

SELECT * FROM table WHERE field 1>1 AND field1 < 10
但我只需要从这个查询中随机抽取一行,这与我的数据库的高负载有关

我可以用

SELECT * FROM table WHERE field 1>1 AND field1 < 10 LIMIT 100, 1
但我不知道记录numebr是否使用正确的偏移范围


我如何才能实现这个目标?

您可以使用ORDER BY RAND

SELECT * FROM table WHERE field1 > 1 AND field1 < 10 ORDER BY RAND() LIMIT 1

这将返回1个随机行,字段1在1和10之间

首先限制您选择的记录如何

SELECT * FROM table WHERE field1 IN (CONVERT(RAND()*10,SIGNED),CONVERT(RAND()*10,SIGNED)) LIMIT 2

在具有10kk记录的数据库上,您将关闭服务器并释放所有用户-没错。然后您将需要使用本文中描述的两个查询:count not variant on big mysql查询结果,使用WHERE on 1kk row表计算calc需要几秒钟。我有一些想法,但我还不确定它们的正确性。我有字段1上的标准,我如何选择它?如果标准是一个范围,你可以创建一个随机数,将落在该范围内,但在这个选择中有很多行,即使我选择了标准,我应该选择随机行而不是第一行。无论如何,谢谢你也给了我一个有趣的想法。这里有很多想法: