【发布时间】:2012-12-11 13:02:33
【问题描述】:
我有一个包含超过 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 select 10 random rows from 600K rows fast
我有
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
谢谢大家。
【问题讨论】:
-
使用
mysql_fetch_array() -
我的问题是如何让它运行得更快。
-
查看侧边栏。关于同一问题的多个问题。
-
我需要选择多于一条记录。我该怎么做