https://docs.djangoproject.com/en/1.5/intro/tutorial01/
我正在学习 Django 教程,在第 1 部分接近尾声时调用了 p.choice_set.all(),我以相反的顺序显示。
例如,我得到:只是再次黑客攻击,天空,不多 而不是:不多,天空,只是再次黑客攻击
知道为什么我得到相反的顺序吗?我按照教程指示的顺序输入它。
我正在运行 PostgreSQL。
请您参考如下方法:
如果您没有明确执行 order_by(),则无法保证返回结果的顺序。
不确定 PostgreSQL,但对于 MySQL,在实践中,如果您仅根据某些索引列选择行的子集,它将按该索引排序,但如果您选择每一行,它'我们将使用表扫描并按照结果在磁盘上的存储顺序返回结果。
关于磁盘顺序,如果您曾经删除过一行,那么当您下次插入一行时它会尝试填充该行使用的空间,所以如果您有...
ID Name
1 Bob
2 Fred
3 Jim
...然后删除第一行,然后添加新行,您会...
ID Name
4 Jeff
2 Fred
3 Jim
...此时 SELECT * FROM my_table 将按 4、2、3 的顺序返回它们,而 SELECT * FROM my_table WHERE id > 1将(可能)以 2、3、4 的顺序返回它们。
