Django:分页ListView数据库性能

net*_*men 3 database django django-generic-views django-pagination

我有一个ListView分页:

class StoriesListView(ListView):
    model = Story
    paginate_by = 20

    def get_queryset(self):
        return Story.objects.all().order_by('-updated_at')
Run Code Online (Sandbox Code Playgroud)

我Story在数据库中有1000个对象.当用户加载我的视图时会发生什么?是从数据库查询所有1000还是只查询20?我该如何优化呢?

dyd*_*dek 5

这取决于你如何使用它.查询集对象是懒惰的,在这种特殊情况下的SQL查询将增加 LIMIT和OFFSET,因此查询将始终返回仅20个结果.但是,当您想在模板中使用相关对象时,必须使用select_related或prefetch_related方法优化查询.

我想你应该阅读如何在django框架中优化数据库访问.

希望这可以帮助.