【发布时间】:2011-07-22 06:52:52
【问题描述】:
在与同行讨论 N+1 以及不良数据库查询对性能的严重影响后,我访问了 http://guides.rubyonrails.org/active_record_querying.html。
ActiveRecord (Rails):
clients = Client.includes(:address).limit(10)
如果客户端有地址,并且我打算在遍历客户端时访问它们,Rails 会提供includes 让它知道继续并将它们添加到查询中,这样一来就消除了 9 个查询。
姜戈:
https://github.com/lilspikey/django-batch-select 提供批量查询支持。您是否知道其他库或技巧来实现 Rails 提供的上述功能,但不那么冗长(如在 rails 示例中,其中只有 19 个字符修复 N+1 并且非常清楚)?另外,批量选择是否以相同的方式解决了这个问题,还是这两个不同的东西?
顺便说一句,我问的不是select_related,尽管乍一看它似乎是答案。我说的是address 有一个指向client 的外键的情况。
【问题讨论】:
标签: django django-orm select-n-plus-1