【发布时间】:2010-08-24 16:27:46
【问题描述】:
我正在尝试找到一种从大型数据集中随机选择的方法。
我们预计数据集将增长到约 50 万条记录,因此找到一种在数据集增长时保持良好表现的方法非常重要。
我尝试了一种来自 http://forums.mysql.com/read.php?24,163940,262235#msg-262235 的技术,但它并不是完全随机的,而且它不能很好地与 LIMIT 子句配合使用,你并不总能得到你想要的记录数。
所以我想,由于 PK 是 auto_increment,我只需生成一个随机 id 列表并使用 IN 子句来选择我想要的行。这种方法的问题在于,有时我需要一组随机数据,其中记录具有特定状态,这种状态最多占总组的 5%。要完成这项工作,我首先需要找出我可以使用的具有特定状态的 ID,所以这也行不通。
我使用的是 mysql 5.1.46,MyISAM 存储引擎。
重要的是要知道选择随机行的查询将非常频繁地运行,并且它正在从中选择的表被频繁地附加到。
任何帮助将不胜感激!
【问题讨论】: