0

私はかなり標準的なDjangoアプリに取り組んでおり、最近は管理者を微調整しています。リストビューは妥当な速度で読み込まれますが、詳細ビューと追加ビューの読み込みには約10秒かかります。

なぜそうなのか正確にはわかりません。データベースが過剰に照会されていることに関係があるのではないかと思いましたが、実際はそうです。ロギングをオンにした後、コントローラーがテーブル内のすべてのIDを照会していることを発見しました。

...
[Mon Oct 22 18:32:52 2012] [error] (0.001) SELECT `courses_course`.`id`, `courses_course`.`semester`,
 `courses_course`.`name`, `courses_course`.`credits`, `courses_course`.`description`, `courses_course
`.`history_id`, `courses_course`.`oldpcr_id`, `courses_course`.`primary_alias_id` FROM `courses_cours
e` WHERE `courses_course`.`id` = 2077 ; args=(2077,)
[Mon Oct 22 18:32:52 2012] [error] (0.000) SELECT `courses_course`.`id`, `courses_course`.`semester`,
 `courses_course`.`name`, `courses_course`.`credits`, `courses_course`.`description`, `courses_course
`.`history_id`, `courses_course`.`oldpcr_id`, `courses_course`.`primary_alias_id` FROM `courses_cours
e` WHERE `courses_course`.`id` = 2078 ; args=(2078,)
[Mon Oct 22 18:32:52 2012] [error] (0.001) SELECT `courses_course`.`id`, `courses_course`.`semester`,
 `courses_course`.`name`, `courses_course`.`credits`, `courses_course`.`description`, `courses_course
`.`history_id`, `courses_course`.`oldpcr_id`, `courses_course`.`primary_alias_id` FROM `courses_cours
e` WHERE `courses_course`.`id` = 2079 ; args=(2079,)
...

なぜこれが起こっているのか誰かが説明できますか?それを説明するようなことは何も考えられません。

4

1 に答える 1

0

ここで答えを見つけました: Admin での Django ForeignKey フィールドのパフォーマンスの改善

Django は外部キーをselectリストとしてリストするため、すべてのキーをクエリする必要があります。いくつかの解決策が考えられるようですが、最も簡単なのはフィールドをraw_id フィールドに設定することです。(実際、そうすることで問題が解決しました。)

于 2012-10-22T23:44:31.147 に答える