【发布时间】:2017-04-13 15:17:21
【问题描述】:
您好,django query get last n records
使用 [:n] 获取最后 n 条记录是个好主意吗?我可以在数据库服务器上做吗(例如在 sql "select top 10" 中),而不是在 django 所在的服务器上?
【问题讨论】:
-
那个正在在数据库中运行。
您好,django query get last n records
使用 [:n] 获取最后 n 条记录是个好主意吗?我可以在数据库服务器上做吗(例如在 sql "select top 10" 中),而不是在 django 所在的服务器上?
【问题讨论】:
我认为对于数据库中的小记录说 1k 记录,使用 django query get last n records 很好,但对于表中的大记录说 1M 行,这不是最好的方法。
从数据库服务器本身获取 n 条记录将比 django 完成 here 获取最后 n 条记录更有效,因为在这种情况下,总记录被排序然后获取,并且在这些记录中,如果你有一个选择直接在数据库服务器上执行查询,你应该选择它,而不是使用 Django ORM 作为 Django ORM 是时间和内存消耗。
order_by('?') 查询可能既昂贵又缓慢,具体取决于 您正在使用的数据库后端。 Details here
【讨论】:
是的,这很好用。
在内部,一个 QuerySet 可以被构造、过滤、切片和 通常在没有实际访问数据库的情况下传递。不 数据库活动实际上会发生,直到您执行某些操作来评估 查询集。
阅读docs了解更多详情。
【讨论】: