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

在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;

  • 问题内容: 我想要在PostgreSQL中随机选择行,我尝试了以下方法: 但是其他一些建议: 我有一个很大的表,有5亿行,我希望它能很快。 哪种方法更好?有什么区别?选择随机行的最佳方法是什么? 问题答案: 根据您的要求(加上注释中的其他信息), 您有一个数字ID列(整数),并且只有很少(或很少有)间隙。 显然没有或只有很少的写操作。 您的ID列必须建立索引!主键很好用。 下面的查询不需要大表的顺

  • 问题内容: 我有一个相当大的数据集和一个需要两个联接的查询,因此查询的效率对我来说非常重要。我需要根据联接的结果从数据库中检索3个满足条件的随机行。这里指出最明显的解决方案效率低下,因为 [这些解决方案]需要对所有表进行顺序扫描(因为需要计算与每一行关联的随机值-以便可以确定最小的行),即使对于中等大小的表也可能相当慢。 但是,那里的作者建议的方法(其中num_value是ID)对我不起作用,因为

  • 问题内容: 从Python目录中选择随机文件的最佳方法是什么? 编辑: 这是我在做什么: 这是特别糟糕,还是有一种更好的方法? 问题答案: 关于您编辑过的问题:首先,我假设您知道使用a的风险,以及从2.6开始不推荐使用并在3.0中删除的事实。 第二,我看不到这里存在任何比赛条件。您的对象基本上是不可变的(在缓存目录列表之后,再也不会读取它),因此并发读取它不会造成任何危害。 除此之外,我不明白为什

  • 问题内容: 从大型mysql表中选择随机行的快速方法是什么? 我正在使用php,但是我对任何解决方案都感兴趣,即使它是另一种语言也是如此。 问题答案: 获取所有ID,从中随机选择一个ID,然后检索整行。 如果您知道ID是连续无孔的,则只需获取最大值并计算一个随机ID。 如果到处都有孔,但大多数是顺序值,并且您不关心随机偏斜,则获取最大值,计算一个id,然后选择ID等于或大于您所计算的ID的第一行。

  • 问题内容: 是否有人在使用LINQ to MySQL的实用程序?你知道哪一个最好吗? 到目前为止,我知道用于NHibernate的LINQ和DBLinq 问题答案: 还有LINQ to LLBLGEN,它可以支持许多数据库。 从LLBLGEN的功能页面 支持SQL Server(MSDE,SQL Server 7/2000/2005 / Express,SQL CE 2.0、3.0、3.5),SQ