यह random()
. के बार-बार मूल्यांकन से बचा जाता है एकत्रीकरण के दौरान और तेज़ होना चाहिए, जैसे min(id)
और random()
केवल एक बार मूल्यांकन किया जाता है।
SELECT u.*
FROM users u
,(SELECT min(id) AS min_id, max(id) AS max_id FROM users) x
WHERE u.id > (floor((x.max_id - x.min_id + 1) * rand()) + x.min_id)
LIMIT 1;