重複の可能性:
MySQLは60万行から10行をランダムに選択します
300,000 を超えるレコードを含むテーブルがあります。このテーブルから 10 個、13 個、または 20 個のレコードを選択する必要があります。
私は次の方法を試しました。
これは選択に時間がかかります
SELECT * FROM products ORDER BY RAND() LIMIT 0,12
また
この方法は同じですが、複数のレコードを選択できないようです
$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
これは動作します ありがとうございました。