有 否默认顺序 ,不能强调不够,因为每个人都没有错点。
数据库中的表不是普通的html表,而是无序的元组集。常常让只习惯MySQL的程序员感到惊讶,因为在该特定数据库中,行的顺序通常是可预测的,因为它没有利用某些高级优化技术。例如,在以下任何查询中都无法知道将返回哪些行或它们的顺序:
select * from table limit 10select * from table limit 10 offset 10select * from table order by x limit 10
在最后一个查询中,只有在x列中的所有值都是唯一的情况下,顺序才是可预测的。只要满足select语句的条件,RDBMS可以随意按任意顺序返回任何行。
尽管您可以在Django级别添加默认排序,这会导致它向每个非排序查询添加order by子句:
class Table(models.Model): ... class meta: ordering = ['name']
请注意,如果出于某些原因您不需要有序的行,则可能会降低性能。



