我有一张包含超过 300,000 条记录的表。我需要从该表中选择 10 或 13 或 20 条记录。
我尝试了以下方法。
这需要很长时间来选择
SELECT * FROM products ORDER BY RAND() LIMIT 0,12
或者
这种方式同样的事情,但我似乎无法选择超过 1 条记录
$temp = mysql_query('SELECT id FROM products limit 0,12');
if ( count( $temp ) > 0 ) {
$j = 1;
foreach( $temp as $index => $row ) {
$p[$j++] = $row[id];
}
$my_p= $p[ rand( 1, --$j ) ];
$pp = 'SELECT id FROM products WHERE id = {$my_p}';
}
更新:按照这个MySQL 从 600K 行中快速选择 10 个随机行
我有
SELECT * FROM QM_Products AS r1
JOIN (SELECT (RAND() * (SELECT MAX(id)
FROM QM_Products )) AS id) AS r2 WHERE r1.id >= r2.id
ORDER BY r1.id ASC
LIMIT 0, 10
这工作谢谢大家。