Как я должен решить этот медленный запрос голосования в 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;
затем проверьте, индексируются ли столбцы "голосование" во время этого запроса, если нет - следует добавить новый индекс в столбец "голосование".