最佳化大型 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中文網其他相關文章!