1
如果我要插入大量的行到沒有主鍵的空表中,也沒有任何索引。每筆交易可能會插入不同數量的行。那麼我可以確定SELECT * FROM the_table;會在Linux和Windows上以相同的順序檢索數據?SQLite數據庫中的數據順序
如果我要插入大量的行到沒有主鍵的空表中,也沒有任何索引。每筆交易可能會插入不同數量的行。那麼我可以確定SELECT * FROM the_table;會在Linux和Windows上以相同的順序檢索數據?SQLite數據庫中的數據順序
不,您不能也不應該依賴查詢中沒有排序約束的結果集中行的順序。即使在同一個平臺上,同一個數據庫。即使它在你的測試中有效。
像VACCUM
之類的事情(或者我認爲的auto_vaccum
模式)可能會改變數據的相對塊佈局並改變結果集,即使別的東西在別處沒有改變(沒有插入,沒有查詢計劃改變) 。
我們甚至可以說真空永遠不會運行,任何數據都不會被刪除。不過,我明白你的觀點。 – David 2011-06-05 16:09:41
你還必須補充說,你永遠不會改變sqlite版本(沒有絲毫補丁),在所有環境中使用相同的編譯器來生成代碼,並且你已經檢查了優化器的行爲方式完全相同,特別確保在引擎中絕對不使用異步I/O,......保持事情穩定的努力太多了。如果你的數據有一個「自然」的排序,讓你的模式反映出來。如果沒有,那麼你不應該在意:-) – Mat 2011-06-05 16:20:14