0

私は現在、自分のWebサイトでdjango-votingを使用しています。しかし、voting.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

mysql クライアントを介してそのテーブルを確認しvotes、explain select を実行する必要があります。

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 に答える