【问题标题】:Django optimized querysetDjango 优化查询集
【发布时间】:2014-12-20 09:33:38
【问题描述】:

我正在尝试这样做:

emails = [c.email for c in Client.objects.all().order_by('lastname', 'firstname')]

有没有更好的方法可以查询SELECT email from clients ORDER BY lastname, firstname

【问题讨论】:

    标签: sql django optimization


    【解决方案1】:
    Client.objects.order_by('lastname', 'firstname').values_list('email', flat=True)
    

    【讨论】:

    • 如果你想要一个列表(而不是一个迭代器),就像你在你的例子中所做的那样,那么你应该将上面的内容包装在一个 list() 调用中,因为它更多在数据库方面高效。
    • 为什么这样会更有效率?通过将ValuesListQuerySet 投射到列表中,您正在执行与遍历其内容相同的数据库调用。数据库通信没有变化。
    猜你喜欢
    • 1970-01-01
    • 2013-02-22
    • 2018-11-08
    • 2019-07-21
    • 2011-10-08
    • 2012-03-19
    • 1970-01-01
    • 2016-09-03
    • 2018-04-22
    相关资源
    最近更新 更多