I am having problems with my query for selecting 100 random rows from a database with 50k of rows.
First i only used the function RAND() but that became too slow.
Now i am using this query:
$query = mysql_query("SELECT t1.* FROM users AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM users WHERE picture != '' && age <= 50 && age >= 18 && username != '')) AS id) AS t2 WHERE picture != '' && age <= 50 && age >= 18 && username != '' && t1.id >= t2.id LIMIT 100");
while($q = mysql_fetch_assoc($query))
{ echo $q['id'].'<br>'; }
But sometimes it gives a bunch of empty rows.
Can anybody tell me whats going wrong?
Thanks!
UPDATE I am trying this query too but it gives me an error.
$query = mysql_query("SELECT id FLOOR(1 + RAND() * x.m_id) 'rand_ind' FROM users (SELECT MAX(t.id) - 1 'm_id' FROM users t) x WHERE picture != '' && age <= 50 && age >= 18 && username != '' ORDER BY rand_ind LIMIT 100");
mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource