django-tables2 用查询淹没数据库
django-tables2 flooding database with queries
im 使用 django-tables2 来显示来自数据库查询的值。一切正常。我现在使用 Django-dabug-toolbar 并用它浏览我的页面。更多的是出于好奇而不是性能需求。当使用 table 锁定页面时,我看到调试工具栏为 table 注册了 300 多个查询,其中有 300 多个条目。我不认为用这么多查询淹没数据库是个好主意,即使没有性能影响(至少现在不是)。所有数据应仅来自一个查询。
为什么会发生这种情况,如何减少查询次数?
我将此发布为我自己和其他可能遇到相同问题的人的未来参考。
搜索了一下后,我发现 django-tables2 正在为每一行发送一个查询。查询类似于 SELECT * FROM "table" LIMIT 1 OFFSET 1
,偏移量增加。
在创建 table 并传递查询之前,我通过调用 query = list(query)
减少了 sql 调用的次数。通过评估 python 视图代码中的查询,table 现在似乎可以使用评估的数据,并且只有一个数据库调用而不是数百个。
这是一个错误,已在 https://github.com/bradleyayers/django-tables2/issues/427
中修复
im 使用 django-tables2 来显示来自数据库查询的值。一切正常。我现在使用 Django-dabug-toolbar 并用它浏览我的页面。更多的是出于好奇而不是性能需求。当使用 table 锁定页面时,我看到调试工具栏为 table 注册了 300 多个查询,其中有 300 多个条目。我不认为用这么多查询淹没数据库是个好主意,即使没有性能影响(至少现在不是)。所有数据应仅来自一个查询。
为什么会发生这种情况,如何减少查询次数?
我将此发布为我自己和其他可能遇到相同问题的人的未来参考。
搜索了一下后,我发现 django-tables2 正在为每一行发送一个查询。查询类似于 SELECT * FROM "table" LIMIT 1 OFFSET 1
,偏移量增加。
在创建 table 并传递查询之前,我通过调用 query = list(query)
减少了 sql 调用的次数。通过评估 python 视图代码中的查询,table 现在似乎可以使用评估的数据,并且只有一个数据库调用而不是数百个。
这是一个错误,已在 https://github.com/bradleyayers/django-tables2/issues/427
中修复