Python Django:想提高查询速度吗

Python Django:想提高查询速度吗,python,mysql,django,views,Python,Mysql,Django,Views,我有一个django应用程序,它显示每个客户端的项目列表。它显示项目id、备选id、标题和更多其他信息。因为我有很多I项目(每个客户机可能有数千个项目),所以加载所有项目可能需要很长时间。有没有办法提高这个速度 def client_items(request, client_id = 0): client = None items = None try: client = models.Client.objects.get(pk = client_id)

我有一个django应用程序,它显示每个客户端的项目列表。它显示项目id、备选id、标题和更多其他信息。因为我有很多I项目(每个客户机可能有数千个项目),所以加载所有项目可能需要很长时间。有没有办法提高这个速度

def client_items(request, client_id = 0):
    client = None
    items = None
    try:
        client = models.Client.objects.get(pk = client_id)
        items = client.storageitem_set.all()
    except:
        return HttpResponse(reverse(return_clients))
    return render_to_response('items.html', {'items':items, 'client':client}, context_instance = RequestContext(request))

{% for item in items %}
        <tr class="items_table_row">
                <td><input type="checkbox" name="{{item.pk}}" value="{{item.pk}}" checked="checked"></td>
                <td>{{item.company_id}}</td><td>{{item.alternative_id}}</td><td>{{item.title}}</td><td>{{item.type}}</td><td>{{item.format}}</td>
                <td><span id="{{item.pk}}" name="type">{{item.itemstatushistory_set.latest}}</span></td><td>{{item.itemstatushistory_set.latest.date.date|date:"d M Y"}}</td>
{% endfor %}
def客户端项目(请求,客户端id=0):
客户端=无
项目=无
尝试:
client=models.client.objects.get(pk=client\u id)
items=client.storageitem\u set.all()
除:
返回HttpResponse(反向(返回客户端))
返回render_to_response('items.html',{'items':items,'client':client},context_instance=RequestContext(request))
{items%%中的项的%s}
{{item.company_id}{{item.alternative_id}{{{item.title}{{{item.type}{{{item.format}
{{item.itemstatushistory_set.latest}{{item.itemstatushistory_set.latest.date.date | date:“dmy”}
{%endfor%}

成为比数千件物品更易于管理的物品。没有分页,不仅速度慢,而且用户体验也不好

确保加载的项目具有恒定数量的数据库查询。对于大多数视图,您应该能够通过一次数据库读取加载所有数据


如果您注意到查询的增加或减少取决于您显示的项目数量,那么您可能需要在查询集中包含一个select_related()。

您真的想显示包含数千个项目的HTML吗?这正是我们的客户所希望的。当然我不介意分页,请定义“很长”。请包括一些可以接受的短时间。另外,请分析此代码段以了解时间花在哪里。既然你写的代码太少,你的代码就不会出错。您需要测量数据库、网络、服务器和客户端的时间,这些时间导致了这种“非常长”(不管是什么)。