2009-07-30 11 views
10

Acabo de insertar 1 millón de registros en una tabla sqlite simple con cinco columnas. ¡Se necesitaron 18 horas en java con los controladores jdbc! Hice lo mismo en python2.5 y me llevó menos de un minuto. La velocidad para las consultas de selección parece estar bien. Creo que este es un problema con los controladores jdbc.insertar sqlite lento usando los controladores jdbc en java

¿Hay un controlador más rápido para sqlite3 en java?

La velocidad de inserción de grandes números de filas es importante para mi script de migración de esquema, y ​​prefiero no tener que usar un script externo para hacer las migraciones si no es necesario.

EDIT: solucionado con connection.setAutoCommit (false); gracias Mark Rushakoff por insinuarme la solución :)

Respuesta

19

¿Tiene usted una consulta autocomergida? Eso podría explicar por qué tomó tanto tiempo. Intente envolverlos en un comienzo/fin para que no tenga que hacer una confirmación completa para cada inserción.

This page explica begin/end transaction, mientras que FAQ toca inserciones/autocommits.

+0

Eso hizo el truco, gracias! –

+0

rendimiento mejorado 1000x ... Gracias – Ewoks

2

Si desea optimizar aún más, puede buscar en lotes las consultas de inserción juntas. Entonces puede cambiar 1 millón de insertos a 1000 insertos de 1000 lotes.

Cuestiones relacionadas