0

我目前在我的网站上使用django-voting 。但事实证明,当 vote.Vote.objects.counts() 的数量达到 10, 000 时,这个查询很慢(1.03 秒)并且出现在 mysql-slow.log

# Query_time: 1.031839  Lock_time: 0.000069 Rows_sent: 1  Rows_examined: 72754                                                                            
SET timestamp=1363621528;                                                                                                                                 
SELECT (COALESCE(SUM(vote), 0)) AS `score`, (COALESCE(COUNT(vote), 0)) AS `num_votes`   FROM `votes` WHERE (`votes`.`object_id` = 10136  AND `votes`.`content_type_id` = 48 ) LIMIT 1;   

我想知道是否有更好的方法来实现这一目标?

4

1 回答 1

1

您应该votes通过 mysql 客户端查看该表,然后执行说明选择:

EXPLAIN SELECT (COALESCE(SUM(vote), 0)) AS `score`, (COALESCE(COUNT(vote), 0)) AS `num_votes`   FROM `votes` WHERE (`votes`.`object_id` = 10136  AND `votes`.`content_type_id` = 48 ) LIMIT 1;   

然后检查在此查询期间是否对列“投票”进行了索引,如果没有 - 您应该在“投票”列上添加新索引。

于 2013-03-18T16:32:25.007 回答