3

非常に簡単なクエリを使用して Django アプリを構築しています。ローカルで実行すると、パフォーマンスがかなり悪くなります。DebugToolbar4119.00 ms (6 queries)は、明らかにかなり悪いと報告します。最も長く実行されているクエリは次のとおりです。

ジャンゴviews.pyコード:

reviews = list(Review.objects.select_related('band', 'record', 'label').order_by('-date_posted')[:12])

出力された SQL:

SELECT * FROM `reviews` 
INNER JOIN `bands` ON (`reviews`.`band_id` = `bands`.`id`) 
INNER JOIN `records` ON (`reviews`.`record_id` = `records`.`id`) 
INNER JOIN `label` ON (`reviews`.`label_id` = `label`.`id`) 
ORDER BY `reviews`.`date_posted` DESC 
LIMIT 12

明らかにいくつかの結合がありますが、私のテーブルは適切にインデックス化されています。phpMyAdmin でそのクエリを実行すると が表示されますQuery took 0.0241 secが、DebugToolbar では が表示されます1838.00 ms。他の 5 つのクエリも同様に低速ですが、直接クエリを実行すると正常に実行されます。

Windows で Django を実行し、MySQL (WAMP サーバー) を使用しています。Django 自身のクエリが非常に遅くなる理由を誰か思いつきますか?

4

2 に答える 2

2
  1. 比較を行うために同じデータベースを使用していることを確認してください。一方のデータが少なく、もう一方のデータが大きい場合、タイミングが変わります。これは指摘するのはばかげたことのように聞こえますが、もっと単純な間違いがあります。

  2. Djangoで、を設定DEBUG=Falseして、Djangoがクエリを保存およびトレースしないようにします。これにより、オーバーヘッドが追加される可能性があります。私はそれがあなたが見ているほど多くを追加することを期待していませんが、あなたは環境を現実的にする必要があります。

于 2012-06-09T12:59:15.797 に答える