1)使用join 和 rand() 耗時 0.009
SELECT
*
FROM
`t_topic` AS t1
JOIN (
SELECT
ROUND(
RAND() * (
(SELECT MAX(id) FROM `t_topic`) - (SELECT MIN(id) FROM `t_topic`)
) + (SELECT MIN(id) FROM `t_topic`)
) AS id
) AS t2
WHERE
t1.id >= t2.id
ORDER BY
t1.id
LIMIT 10;
2) 下面這條比上面那個還要慢幾秒
SELECT * FROM `t_topic` WHERE id >= (SELECT floor( RAND() * ((SELECT MAX(id) FROM `t_topic`)-(SELECT MIN(id) FROM `t_topic`)) + (SELECT MIN(id) FROM `t_topic`))) ORDER BY id LIMIT 10;
3)或者使用下面這個也可以測試也是 耗時0.0012
SELECT
*
FROM
`t_topic`
WHERE
id >= (
SELECT
floor(
RAND() * (SELECT MAX(id) FROM `t_topic`)
)
)
ORDER BY
id
LIMIT 10;
轉自:https://www.cnblogs.com/wanglijun/p/8926371.html

