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

时间:2012-06-09 12:55:42

标签: 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 took 0.0241 sec,但在DebugToolbar中,我看到1838.00 ms。其他5个查询同样缓慢,但直接查询时运行正常。

我在Windows上运行Django并使用MySQL(WAMP服务器)。任何人都可以想到为什么Django自己的查询会如此缓慢?

1 个答案:

答案 0 :(得分:2)

  1. 确保使用相同的数据库进行比较。如果一个数据量很少,另一个数据量很大,那么时间会发生变化。这听起来像是一件愚蠢的事情,但是已经犯了更简单的错误。

  2. 在Django中,设置DEBUG=False,这样Django就不会存储和跟踪查询,这可能会增加开销。我不希望它添加到你看到的那么多,但你需要让环境变得现实。