使用 ORM 时的 SQL 性能问题
SQL 查询数据缓慢,有可能是几个原因:
- 数据库表缺乏一些必要的索引
- Django ORM 生成的 SQL 不够好
- 没有正确地使用 Django ORM
调试思路主要是将 Django ORM 生成的原始 SQL 显示出来,再进行分析。显示原始 SQL 的方法有:
- 使用 Django Debug Toolbar / Django Debug Panel
- 使用 Django Extensions 的
shell_plus
- 在 Django 的 logging 配置里,将
django.db
配置为 logger,并使用DEBUG
的 log level - 使用
django.db.connections
提供的原始信息
处理抛异常
Django 的异常信息页面已经提供了非常详细的信息,对农副产品问题很有帮助。同时你可以使用 Django Extensions 中提供的 runserver_plus
命令,使 Werkzeug 内嵌到 Django 的内置服务器中,这样可以在抛异常时的每一帧函数上做调试。