MySQL 范围随机是指在 MySQL 数据库中,从一个特定的范围内随机选择数据。这通常用于需要随机展示数据的场景,如随机推荐、随机抽样等。
原因:当数据量较大时,ORDER BY RAND()
会导致全表扫描,性能较差。
解决方法:
-- 基于 LIMIT 的随机查询
SELECT * FROM users ORDER BY RAND() LIMIT 5;
-- 基于范围的随机查询
SELECT * FROM users WHERE id BETWEEN 100 AND 200 ORDER BY RAND() LIMIT 5;
-- 预先生成随机 ID
SELECT * FROM users WHERE id IN (SELECT FLOOR(RAND() * (SELECT MAX(id) FROM users - SELECT MIN(id) FROM users + 1)) + (SELECT MIN(id) FROM users) AS random_id);
希望这些信息对你有所帮助!
领取专属 10元无门槛券
手把手带您无忧上云