mysql - Django:MySQL 查询运行非常慢,但直接针对数据库运行时速度很快(不通过 Django)

标签 mysql django

我正在使用一些非常简单的查询构建一个 Django 应用程序。当我在本地运行它时,性能很差:DebugToolbar 报告 4119.00 ms (6 queries) 这显然很糟糕。运行时间最长的查询是这个:

Django 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 take 0.0241 sec,但在 DebugToolbar 中我看到 1838.00 ms。其他 5 个查询同样卡顿,但直接查询时运行正常。

我在 Windows 上运行 Django 并使用 MySQL(WAMP 服务器)。谁能想到 Django 自己的查询如此慢的任何原因?

最佳答案

  1. 确保您使用相同的数据库进行比较。如果一个数据量小,而另一个数据量大,时间就会改变。指出这听起来像是一件愚蠢的事情,但更简单的错误已经出现。

  2. 在 Django 中,设置 DEBUG=False,这样 Django 就不会存储和跟踪查询,这会增加开销。我不希望它像您所看到的那样增加,但您需要使环境逼真。

关于mysql - Django:MySQL 查询运行非常慢,但直接针对数据库运行时速度很快(不通过 Django),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10961205/

相关文章:

sql - Django 进行 1000 次重复查询

c++ - 长时间保持活跃的 MySQL 连接不好吗?

java - 如何处理关系数据库中的继承

MySQL - 来自另一个表的总和

php - 在非对象上调用成员函数 fetch_assoc() - 非常确定 sql 查询是正确的

使用 Whoosh 的 Django Haystack 随机错误

sql - 在 SQL 语句中使用 LIKE 时没有完全匹配

python - UWSGI 堆栈转储

python - 根据可选参数过滤 Django 中的对象

django - 获取过去30天内每天创建的对象