2012-01-14 6 views
0

用バルクSelect文、私はデータベースのテーブルを持っているの最適化:はSQLiteの

id INTEGER PRIMARY KEY 
, X INTEGER 
, Y INTEGER 
, Value INTEGER 

1050625件のレコードがあり、そして私は、私はちょうど4列目からのすべてのレコードをしたい

SELECT Value 
FROM Tablename 

を使用してそれらを呼び出します。私の関数はこれらを配列に格納しますが、このデータをすべて取得するには約5分かかります。

このデータを取得する方法はありますか?

答えて

0

PRAGMA cache_size=<number of pages>でsqliteキャッシュを増やしてください。使用されるメモリは<number of pages><size of page>です。これらの値をそれぞれ16000と32768(または約512MB)に設定することにより、この1つのプログラムのバルクロードを20分から2分に短縮することができました。 (ただし、そのシステム上のディスクがそれほど遅くない場合、これはあまり効果がなかったかもしれません)。

このような余分なメモリは、より小さい組み込みプラットフォームでは利用できないかもしれませんが、それは私がやったものと同じくらいですが、デスクトップやラップトップレベルのシステムでは、大いに役立ちます。