2011-06-05 49 views
1

如果我要插入大量的行到没有主键的空表中,也没有任何索引。每笔交易可能会插入不同数量的行。那么我可以确定SELECT * FROM the_table;会在Linux和Windows上以相同的顺序检索数据?SQLite数据库中的数据顺序

回答

3

不,您不能也不应该依赖查询中没有排序约束的结果集中行的顺序。即使在同一个平台上,同一个数据库。即使它在你的测试中有效。

VACCUM之类的事情(或者我认为的auto_vaccum模式)可能会改变数据的相对块布局并改变结果集,即使别的东西在别处没有改变(没有插入,没有查询计划改变) 。

+0

我们甚至可以说真空永远不会运行,任何数据都不会被删除。不过,我明白你的观点。 – David 2011-06-05 16:09:41

+0

你还必须补充说,你永远不会改变sqlite版本(没有丝毫补丁),在所有环境中使用相同的编译器来生成代码,并且你已经检查了优化器的行为方式完全相同,特别确保在引擎中绝对不使用异步I/O,......保持事情稳定的努力太多了。如果你的数据有一个“自然”的排序,让你的模式反映出来。如果没有,那么你不应该在意:-) – Mat 2011-06-05 16:20:14