【问题标题】:Slow query, looking on pointers how to optimize it查询慢,看指针如何优化
【发布时间】: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


【解决方案1】:

查询看起来不错,我想说唯一可以提高性能的方法是对投票或歌曲 ID 进行正确索引。

【讨论】:

  • 啊,没看到你最后的评论。这是索引。 ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-30
  • 1970-01-01
  • 1970-01-01
  • 2013-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多