高性能地从MySQL数据库随机取一条数据

原理

  1. 利用主键ID索引的特性,通过最大的ID乘以一个随机数得到一个随机的ID;
  2. 将随机的ID作为临时表;
  3. 将原表和临时表利用主键ID关联;
  4. 利用主键ID排序,只取一条数据。

示例SQL

SELECT
  t3.*
FROM
  (
  	SELECT
       t1.*
   	FROM table t1 INNER JOIN
   	(SELECT ROUND(RAND() * (SELECT MAX(id) FROM table)) id) t2 ON t1.id >= t2.id
   	ORDER BY t1.id ASC LIMIT 0,1
  ) t3
posted @ 2024-10-23 17:49  付聪  阅读(23)  评论(0)    收藏  举报