私は解決策に行きます。
SELECT p1.ID, p1.post_content, p1.post_title, p1.post_date, p1.post_name
FROM posts as p1 JOIN
(SELECT CEIL(RAND() *
(SELECT MAX(ID)
FROM posts)) AS id)
AS p2
WHERE p1.ID >= p2.id
ORDER BY p1.ID ASC
LIMIT 0, 24
これは私のクエリよりも高速です。
MySQLは600Kからランダムな10行を選択します行が速い
これが解決策です。
ありがとう