Как я должен решить этот медленный запрос голосования в mysql-slow.log?

В настоящее время я использую Django-голосование на моем сайте. Но оказывается, что когда число голосования.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;   

Мне интересно, есть ли лучший способ добиться этого?

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;   

затем проверьте, индексируются ли столбцы "голосование" во время этого запроса, если нет - следует добавить новый индекс в столбец "голосование".

Другие вопросы по тегам