【发布时间】:2012-09-28 14:17:57
【问题描述】:
这需要很长时间才能完成,但希望能够快速提取它收集的信息。
SELECT *
FROM releases
WHERE (artist IN (SELECT artist FROM artist_love WHERE user='Quickinho')
OR
label IN (SELECT label FROM label_love WHERE user='Quickinho')
OR
id IN (SELECT release_id FROM charts_extended WHERE artist IN (SELECT dj FROM dj_love WHERE user='Quickinho'))
OR
id IN (SELECT artist FROM releases WHERE id IN (SELECT release_id FROM charts_extended WHERE user='Quickinho'))
OR
id IN (SELECT label FROM releases WHERE id IN (SELECT release_id FROM charts_extended WHERE user='Quickinho')))
AND
id NOT IN (SELECT release_id FROM charts_extended WHERE user='Quickinho')
ORDER BY date DESC
LIMIT 0,102
【问题讨论】:
-
请将表 CREATE 添加到问题中。并添加此查询返回的内容
EXPLAIN ...(...是您的查询) -
子查询比 JOIN 相对慢,并且旧 MySQL 服务器版本不支持。考虑使用 JOIN。
-
您可能在那里缺少一些索引。你能发一个
EXPLAIN吗?