2013-06-10 1 views
5

SQLite 데이터베이스에서 메모리에 10,000 개의 행을로드하는 가장 빠른 방법은 무엇입니까? 각 행에는 1 개의 텍스트와 4 개의 정수가 있습니다. 현재이 작업을 수행하고 있습니다.SQLite 데이터베이스에서 10000 개의 행을로드하는 가장 빠른 방법은 무엇입니까?

while(!cursor.isAfterLast()) { 
    cursor.copyStringToBuffer(column_index_1, buffer); 
    cursor.copyStringToBuffer(column_index_2, buffer); 
    cursor.copyStringToBuffer(column_index_3, buffer); 
    cursor.copyStringToBuffer(column_index_4, buffer); 
    cursor.copyStringToBuffer(column_index_5, buffer); 
    cursor.moveToNext(); 
} 

위의 코드는 Galaxy Nexus에서 약 750ms가 걸립니다. 오래된 장치의 경우 몇 배 느려질 수 있습니다. 빨리 할 수 ​​있을까요?

(이 시점에서 "왜 행을 메모리에로드해야합니까?"와 같은 내용을 입력하는 것 같습니다. 조금 복잡하지만 누군가 관심이 있는지 설명 할 수 있습니다. 편집 : 여기 설명 : https://gist.github.com/fhucho/af355d56ae3145e3e30f)

+2

찾을 수 있습니다! 설명 해주십시오. :) –

+0

@KenWolf ok, 몇 분 후에 설명에 대한 링크를 게시합니다 :) – fhucho

+0

행의 모든 ​​열이 동일한 버퍼에 복사되면 "select col1 ||"과 같은 SQL 문을 작성해보십시오. col2 || ... "를 사용하여 sqlite가 연결을 수행하도록합니다. 이것은 더 빠르거나 빨라질 수도 있습니다. –

답변

2

첫 번째 1000 개의 행만로드 한 다음 AsyncTask를 사용하여로드를 늘리는 것이 좋습니다.

당신은 여기에 응답 http://www.javasrilankansupport.com/2012/11/asynctask-android-example-asynctask-in.html

희망이 도움이 내가 관심

+1

글쎄, * 모든 행이 비동기 적으로로드되어야합니다. 첫 번째 1,000 개의 행이 무료 인 것과는 다릅니다. :-) – CommonsWare

+0

나는 비동기 적으로 거의 확실하게 할 것이지만, 그것은 느릴 것이라고 사실을 바꾸지는 않을 것이다. :) – fhucho

관련 문제