我得到了一個數據庫應用程序。SqliteDatabase處理程序 - 爲什麼第一次寫查詢需要比其他時間更長
它只被Application類調用一次,然後引用被轉發給需要它的人。當它初始化時,我打電話給db = this.getWritableDatabase();
並將它打開。雖然簡單Double的每個寫入操作需要大約6-10 ms,但第一次需要30-50 ms,最多可達8倍。
這是怎麼回事?它是初始化嗎?我以爲打電話getWritableDatabase()
會初始化我的一切?還是有另一個原因?我可以在什麼地方閱讀它,爲什麼以及它的行爲如何?
在此先感謝
編輯:爲了使這更清楚:值獲取數據庫處理程序的初始化之後寫入方式,所以動初始化將是長期過度。
編輯2:現在,我挖更深的話題,我發現兩兩件事:
- 據說查詢上沒有索引的表會慢一些。這總是如此嗎?不會android創建像sqlite_autoindex_tablename_1這樣的索引。這不是解決了嗎?
getWritableDatabase()
並沒有真正打開任何東西,只是當第一個遊標操作(如cursor.move()
)被執行時它真的被加載了嗎?那是對的嗎?
嘿,謝謝你的回答,但儘管它確實是內容豐富的,但它並沒有幫助我。我的數據庫是用MyApplication對象創建的,據我所知,正好在應用程序的開頭。這是它調用getWritableDatabase的地方。即使這需要一些時間,但我的valueGenerator在它初始化之後(在創建數據庫之後沿着道路的某種方式)等待5秒鐘,然後它開始寫入值。所以數據庫已經被創建並且應該準備好,但是第一次寫入需要60ms。任何想法如何? – Ginbak 2014-10-06 11:49:11