如果有人可以帮助我,你好会很棒。
基本上,图像属于相册。
我正在运行的查询非常慢,我可以提供一些优化建议。
查询的缓慢部分是 (SELECT count(*) from album_image where album_image.album_id = al.id) as image_count 所以任何关于优化的建议都会很棒。我已经使用解释扩展来在这里找到问题。我需要选择一个随机的 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;