您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

从Django过滤器调用返回的列表的默认顺序是什么?

从Django过滤器调用返回的列表的默认顺序是什么?

有否认顺序,不能强调不够,因为每个人都没有错点。

数据库中的表不是普通的html表,它是无序的元组集。常常让只习惯MysqL的程序员感到惊讶,因为在该特定数据库中,行的顺序通常是可预测的,因为它没有利用某些先进的优化技术。例如,在以下任何查询中都无法知道将返回哪些行或它们的顺序:

select * from table limit 10
select * from table limit 10 offset 10
select * from table order by x limit 10

在上一个查询中,只有在x列中的所有值都是唯一的情况下,顺序才是可预测的。只要满足select语句的条件,RDBMS可以随意按任意顺序返回任何行。

尽管你可以在Django级别添加认排序,但这会导致它向每个非排序查询添加order by子句:

class Table(models.Model):
    ...
    class Meta:
        ordering = ['name']

请注意,如果由于某些原因你不需要有序的行,则可能会降低性能

Go 2022/1/1 18:20:42 有446人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶