Mysql 通过SQL显示有限的随机行
我正在使用select命令从sql表中选择值。它从表中返回10个值。但我想随机显示3个值。在大表上不是一个好主意:Mysql 通过SQL显示有限的随机行,mysql,Mysql,我正在使用select命令从sql表中选择值。它从表中返回10个值。但我想随机显示3个值。在大表上不是一个好主意: select * from mytable order by rand() limit 3 在大桌子上不是个好主意: select * from mytable order by rand() limit 3 简单地说,您可以对小桌子执行以下操作: SELECT * FROM yourTable ORDER BY RAND() LIMIT 3; 但是如果您有一个大表,那么您可
select * from mytable order by rand() limit 3
在大桌子上不是个好主意:
select * from mytable order by rand() limit 3
简单地说,您可以对小桌子执行以下操作:
SELECT * FROM yourTable
ORDER BY RAND()
LIMIT 3;
但是如果您有一个大表,那么您可以使用resultset的碎片进行选择…假设您的表包含200K行,您只需要随机选择100行,那么您就可以计算resultset的片段…给定表的resultset片段将为0.0005,以后可以这样使用:
SELECT * FROM yourTable WHERE RAND()<=0.0005
SELECT * FROM yourTable WHERE RAND()<=0.0006 LIMIT 100;
从您的表中选择*,其中RAND()简单地说,您可以对小表执行以下操作:
SELECT * FROM yourTable
ORDER BY RAND()
LIMIT 3;
但是如果您有一个大表,那么您可以使用resultset的碎片进行选择…假设您的表包含200K行,您只需要随机选择100行,那么您就可以计算resultset的片段…给定表的resultset片段将为0.0005,以后可以这样使用:
SELECT * FROM yourTable WHERE RAND()<=0.0005
SELECT * FROM yourTable WHERE RAND()<=0.0006 LIMIT 100;
从RAND()所在的表中选择*尝试以下操作:
SELECT *
FROM tableName
ORDER BY RAND()
LIMIT 3
但是请注意,使用按兰德排序(),,按兰德排序()
已经落后于表中仅100行的优化查询
展示了基于性能生成随机记录的不同技术。尝试以下方法:
SELECT *
FROM tableName
ORDER BY RAND()
LIMIT 3
但是请注意,使用按兰德排序(),,按兰德排序()
已经落后于表中仅100行的优化查询
展示了基于性能生成随机记录的不同技术。按兰德排序()
如果您有一个大表,则速度会非常慢。按兰德排序()
如果您有一个大表,则速度会非常慢。每个人都建议按兰德排序()
。如果您有一个小表,这是很好的,但是如果您有很多数据,这将非常缓慢。如果它对您来说太慢,请参阅我在这里的答案以获得替代方案:每个人都建议orderbyrand()
。如果您有一个小表,这是很好的,但是如果您有很多数据,这将非常缓慢。如果速度太慢,请参见我的答案: