在我的 Django 应用程序中,我注意到具有大量 sql 查询的页面的加载速度比其他页面慢得多。我不是 web 开发的第一天,主要是我与 Drupal 这样的资源大猪打交道,但即使是每页 150 到 200 个 sql 查询的 Drupal 也会在 0.5 到 0.7 秒内生成页面。
另一方面,Django 在每页平均查询数或多或少的情况下表现非常糟糕。例如,我的一个页面会生成 60 个这样的查询:
SELECT`gamenode_gamenode`.`id`, `gamenode_gamenode`.`title`, `gamenode_gamenode`.`short_desc`, `gamenode_gamenode`.`full_desc`, `gamenode_gamenode`.`slug`, `gamenode_gamenode`.`type`, `gamenode_gamenode`.`source_gameid`, `gamenode_gamenode`.`created`, `gamenode_gamenode`.`updated`, `gamenode_gamenode`.`status`, `gamenode_gamenode`.`promote`, `gamenode_gamenode`.`sticky`, `gamenode_gamenode`.`hit_count`, `gamenode_gamenode`.`game_rank`, `gamenode_gamenode`.`share_count`, `gamenode_gamenode`.`like_count`, `gamenode_gamenode`.`comment_count` FROM `gamenode_gamenode` WHERE `gamenode_gamenode`.`id` = 1058
并将数据输出为一个简单的字符串,生成一个页面需要 1200 毫秒!我这样做只是为了进行测试以生成许多相当简单的查询。如果我将查询数量降低到 10 - 15,页面生成时间将恢复到或多或少可以接受的数字。
所以我有一个问题,为什么页面上有很多sql查询时,Django会这么慢?我使用 Rails、Symfony 和 Drupal 进行了类似的比较,所有这些“资源消耗者”的表现都比 Django 好得多。我是不是做错了什么,或者有一些“秘密”设置可以让 Django 中的事情变得更快,或者,也许 Djangonauts 认为这样的时间是正常的,只是努力编写产生尽可能少的查询的代码?请帮我解决这个问题。