2014-11-08 4 views
1

저는 데이터베이스를 처음 사용합니다. 여기 이야 (A String 인)는 arrylist입니다 내가 SQLite는 DB에 22,000 단어를 삽입 묶는하고 있지만Sqlite에 삽입하는 속도가 느립니다.

for (int i=0;i<s.size();i++){    
    String sql = "INSERT INTO WORD (word) VALUES ("+"'"+s.get(i)+"'"+");"; 
    statement.executeUpdate(sql); 
} 

테이블 이름을 완료하기 위해 영원히 걸리는

은 WORD이고 필드 이름은 단어입니다 및 s.get (i) 문자열을 반환합니다 ... 나는 연결을 만들고 테이블을 업데이트하려고합니다.

매우 느립니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

배치 삽입물을 사용하려고 시도하면 어떤 변화가 있습니까? – BackSlash

+2

22 000 개의 항목을 몇 번이나 삽입합니까? "천천히"란 무엇인가, 실제로 얼마나 오래 걸리는가? – Patrick

+0

그것은 다른 프로그래밍 언어이지만, http://stackoverflow.com/questions/1711631/improve-insert-per-second-performance-of-sqlite에서보십시오 – Patrick

답변

1

데이터베이스에 22000 개의 쿼리가 발생하기 때문에 속도가 느립니다. 일괄 적으로 삽입해야합니다. 그러면 문제가 해결 될 것입니다. 하나의 인서트가 10ms가 걸린다고해도 총 시간은 3.5 분입니다! 2의 배치와

간단한 삽입 쿼리는 반으로 시간이 줄어 듭니다이

"INSERT INTO WORD (word) VALUES ("+"'"+s.get(i)+"'"+"), ("+"'"+s.get(i+1)+"'"+");"; 

과 같이 표시됩니다. 이제 프로그래밍 방식으로 이러한 값을 더 삽입해야합니다.

+1

"좋을지도 모릅니다"? 추측하고 있니? OP에 배치 삽입물이 무엇인지, 그리고 어떻게 처리 할 것인가를 설명하는 것이 더 좋지 않을까요? 맨 처음 문장은 "나는이 책에 익숙하지 않다"라는 것입니다. 그래서 배치 삽입이 무엇인지 모를 가능성이 큽니다. – Patrick

+0

내 답변이 부족한 경우를 대비하여 답변을 편집 할 수있는 옵션이 있습니다. 어쨌든 문제를 지적 해 주셔서 감사합니다. – vatsal

관련 문제