Bom dia pessoal, essa semana tive que fazer uma carga de dados na minha aplicacao do Android com SQLite, e foi incrivelmente lento o SQLite na inclusão, e lendo a documentação do SQLite descobri que é assim mesmo, ou seja, ele preserva por padrão a integridade dos dados, bom, mas para fazer a carga de dados que eu precisava não poderia demorar tanto, precisava desligar a integridade para que isso ocorre-se num tempo ágil.
Lendo a documentação e o google, achei dois parametros, um é o "synchronous" e outro é o "journal_mode", o segundo desliga totalmente a integridade, num teste básico a minha carga de dados com 40 mil registros levava 53 segundos, utilizando esses parametros levaram 1 segundo. Claro, sem integridade nenhuma. Segue os exemplos.
Para desativar a integridade.
HExecuteSQLQuery(Query,Minhaconexao,hQueryWithoutCorrection,"PRAGMA synchronous = OFF;")
HExecuteSQLQuery(Query,Minhaconexao,hQueryWithoutCorrection,"PRAGMA journal_mode = OFF;")
Seu bloco de inclusão aqui...
Para ativar os parametros por default novamente.
HExecuteSQLQuery(Query,Minhaconexao,hQueryWithoutCorrection,"PRAGMA synchronous = FULL;")
HExecuteSQLQuery(Query,Minhaconexao,hQueryWithoutCorrection,"PRAGMA journal_mode = DELETE;")
Pronto!, uma inclusão praticamente instantanea.
Wolak.