#----------------------------- #This query works, but is slow #----------------------------- SELECT galleries.id, galleries.link, galleries.title, galleries.pics, galleries.vids, affiliate_sites.website FROM (galleries, affiliate_sites_sites, affiliate_sites, galleries_sites) LEFT JOIN displayed_galleries ON (galleries.id = displayed_galleries.id) WHERE galleries.affiliate_site_id = affiliate_sites.id AND displayed_galleries.id IS NULL AND galleries.status = 100 AND galleries_sites.gallery_id = galleries.id AND galleries_sites.thumb = 1 AND galleries_sites.site_id = '3' AND affiliate_sites_sites.affiliate_site_id = affiliate_sites.id AND affiliate_sites_sites.site_id = '3' ORDER BY RAND() #---------------------------------------------------- #This query is fast, but sometimes selects blank rows #---------------------------------------------------- SELECT galleries.id, galleries.link, galleries.title, galleries.pics, galleries.vids, affiliate_sites.website FROM (galleries, affiliate_sites_sites, affiliate_sites, galleries_sites) LEFT JOIN displayed_galleries ON (galleries.id = displayed_galleries.id) JOIN (SELECT r1.random_id FROM galleries_holes AS r1 JOIN (SELECT (RAND() * (SELECT MAX(row_id) FROM galleries_holes)) AS row_id) AS r2 WHERE r1.row_id >= r2.row_id ORDER BY r1.row_id ASC LIMIT 1) as rows ON (galleries.id = random_id) WHERE galleries.affiliate_site_id = affiliate_sites.id AND displayed_galleries.id IS NULL AND galleries.status = 100 AND galleries_sites.gallery_id = galleries.id AND galleries_sites.thumb = 1 AND galleries_sites.site_id = '3' AND affiliate_sites_sites.affiliate_site_id = affiliate_sites.id AND affiliate_sites_sites.site_id = '3' #----------------------------------------------------------------- #This query is fast, but i cannot control which lines are selected #----------------------------------------------------------------- SELECT * FROM galleries JOIN (SELECT r1.random_id FROM galleries_holes AS r1 JOIN (SELECT (RAND() * (SELECT MAX(row_id) FROM galleries_holes)) AS row_id) AS r2 LEFT JOIN galleries on (galleries.id=r2.row_id) # i added to try to filter WHERE r1.row_id >= r2.row_id AND galleries.id = 74580 # i added to try to filter ORDER BY r1.row_id ASC LIMIT 1) as rows ON (id = random_id);