【发布时间】:2013-07-31 07:44:04
【问题描述】:
我有一个大约需要 9 秒的查询。它使我的网站非常缓慢。谁能指出我如何优化它以获得更好的性能的正确方向。不要评判语法,它很丑:$
SELECT songs.id, count(votes.song_id) AS votes
FROM songs, songs_genre, votes
WHERE votes.song_id=songs.id
AND songs_genre.genre_id IN ('$genre_ids')
AND songs.id=songs_genre.song_id
AND votes.date<=DATE_ADD(CURDATE(), INTERVAL + 1 DAY)
AND votes.date>=DATE_ADD(CURDATE(), INTERVAL - 3 MONTH)
GROUP BY votes.song_id
ORDER BY votes DESC limit 36
【问题讨论】:
-
在查询中添加 EXPLAIN 检查数据库是否被正确索引
-
有理由猜测以下内容应该被索引:songs.id,votes.song_id,songs_genre.genre_id,songs_genre.song_id,votes.date,votes(whatever table that is)
-
是的,这就是问题所在,有 50 万个条目的表投票没有被索引。有问题。谢谢大家
标签: php sql database optimization