当前位置: 首页 > 面试题库 >

从mysql中的大表中快速选择随机行

缪英锐
2023-03-14
问题内容

从大型mysql表中选择随机行的快速方法是什么?

我正在使用php,但是我对任何解决方案都感兴趣,即使它是另一种语言也是如此。


问题答案:

获取所有ID,从中随机选择一个ID,然后检索整行。

如果您知道ID是连续无孔的,则只需获取最大值并计算一个随机ID。

如果到处都有孔,但大多数是顺序值,并且您不关心随机偏斜,则获取最大值,计算一个id,然后选择ID等于或大于您所计算的ID的第一行。偏斜的原因是,跟着另一个id的那些洞,跟随这些洞的id更有可能被选中。

如果您是随机订购的话,那么您手上的桌子扫描将很糟糕,而“ 快速 ”一词不适用于这种解决方案。

不要这样做,也不要按GUID订购,它有同样的问题。



 类似资料:
  • 问题内容: 我正在使用PHP和MySQL创建一个简单的Web应用程序。在其中,我需要以随机顺序从表中随机选择一小组行。如何使用MySQL实现此类目标? 问题答案: SELECT * FROM table ORDER BY RAND() LIMIT 10;

  • 问题内容: 如何最好地编写一个查询,从总共60万行中随机选择10行? 问题答案: 一个出色的职位,可以处理多种情况,从简单到有缺口,再到有缺口的不均匀。 http://jan.kneschke.de/projects/mysql/order-by- rand/ 对于大多数一般情况,这是您的操作方法: 这假定id的分布是相等的,并且id列表中可能存在间隙。请参阅文章以获取更多高级示例

  • 问题内容: 如何最好地编写一个查询,从总共60万行中随机选择10行? 问题答案: 一个出色的职位,处理从简单到有缺口,再到有缺口不均匀的几种情况。 http://jan.kneschke.de/projects/mysql/order-by- rand/ 对于大多数一般情况,这是您的操作方法: 这假定id的分布是相等的,并且id列表中可能存在间隙。请参阅文章以获取更多高级示例

  • 问题内容: 我有一个大于1000万行的巨大表。我需要从中有效地获取5000个随机样本。我有一些限制因素,使我想要的总行数减少到9密耳。 我尝试通过NEWID()使用order,但是该查询将花费很长时间,因为它必须对所有行进行表扫描。 有没有更快的方法可以做到这一点? 问题答案: 如果您可以使用伪随机抽样并且您使用的是SQL Server 2005/2008,则请看一下TABLESAMPLE。例如,

  • 问题内容: 允许从向量中进行加权选择,即 选择概率为0.2的1,概率为0.5的2和概率为0.3的3。 如果我们想对每个行都是概率向量的2D数组(矩阵)以向量化的方式快速进行操作,该怎么办?也就是说,我们想要一个来自随机矩阵的选择向量吗?这是超级慢的方式: : 这篇文章表明,并且可能是一种潜在的方法,而且很快。但是虽然可以沿numpy数组的一个轴执行此操作,但是该函数一次只能在单个数组上运行。同样,

  • 我试图在Python中创建一个随机列表。每次运行代码时,列表中的随机单词都会按顺序出现。我想做的是: 目标是要求用户从将要显示的列表中选择一些内容。下面是我想要的输出示例: