优化大型 MySQL 表中的随机行选择
从大量 MySQL 表(例如 600,000 行)中提取 10 个随机行需要优先考虑速度和效率的策略。 对于大型数据集来说,使用 ORDER BY RAND()
的简单方法是非常慢的。 更有效的方法如下:
以下查询提供了明显更快的解决方案:
<code class="language-sql">SELECT name FROM random WHERE id >= (SELECT FLOOR(RAND() * MAX(id)) FROM random) ORDER BY id LIMIT 10;</code>
此查询的工作原理是首先使用 id
确定 FLOOR(RAND() * MAX(id))
列范围内的随机起点。 然后,它选择 id
大于或等于该随机起点的行。 最后,它按 id
对结果进行排序,并将输出限制为 10 行。 这避免了 ORDER BY RAND()
固有的全表扫描,从而显着提高了性能。 这种方法确保了表中随机行的相对均匀分布。
以上是如何高效地从大型 MySQL 表中随机选择 10 行?的详细内容。更多信息请关注PHP中文网其他相关文章!