こんにちは、誰かがこれで私を助けることができれば素晴らしいでしょう.
基本的に画像はアルバムに属します。
私が実行しているクエリは非常に遅いので、最適化に関するアドバイスが必要です。
クエリの遅い部分は (select count(*) from album_image where album_image.album_id = al.id) as image_count であるため、最適化に関するアドバイスは素晴らしいでしょう。ここで問題を見つけるために拡張されたExplainを使用しました。各アルバムのランダムな画像であるランダムな GUID ID を選択する必要があるため、内部結合が必要です。RAND() の使用はあまり良くありませんが、これが各アルバムからランダムな画像を選択する最良の方法であるかどうかはわかりません
SELECT al.id, al.alias_title, al.title, al.hits, al.created_on, uf.real_name, uf.user_name, T.guid_id,
(SELECT count(*) from album_image where album_image.album_id = al.id) as image_count
FROM album al
INNER JOIN (SELECT imx.id, aix.album_id, imx.guid_id FROM image imx
INNER JOIN album_image aix ON imx.id = aix.image_id
ORDER BY floor(RAND()*(SELECT count(1) FROM image))) AS T ON al.id = T.album_id
INNER JOIN user us ON al.user_id = us.id
LEFT JOIN user_flickr uf ON us.flickr_id = uf.id
LEFT JOIN user_site uss ON us.user_site_id= uss.id
WHERE al.approved = 'Yes' AND al.visible ='1'
GROUP BY T.album_id;