Php 慢速查询,查看如何优化它的指针

Php 慢速查询,查看如何优化它的指针,php,sql,database,optimization,Php,Sql,Database,Optimization,我有一个大约需要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 song

我有一个大约需要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
选择songs.id,将(投票数.song\u id)计算为投票数
来自歌曲、歌曲类型、投票
投票的位置。song_id=songs.id
和歌曲_genre.genre_id IN(“$genre_id”)
AND songs.id=songs\u genre.song\u id
日期=日期添加(CURDATE(),间隔-3个月)
按票数分组。宋_id
按票数顺序说明限制36

查询看起来不错,我想说唯一能立即提高性能的方法是对投票或歌曲id进行适当的索引。

在查询中添加解释检查数据库是否正确索引。有理由猜测应该对以下内容进行索引:songs.id,vows.song\u id,songs\u genre.genre\u id,songs\u genre.song\u id,vows.date,vows(这是什么表格)是的,这就是问题所在,有50万个条目的表格投票没有被索引。这就是问题所在。谢谢Guysah,没有看到你最后的评论。这是索引。;)