2012-05-30 15 views
6

de noche,30 millones de filas de MySQL

estoy pasando por el largo proceso de importación de datos desde un maltratadas, de 15 años de edad, de sólo lectura formato de datos en MySQL para construir unas tablas estadísticas más pequeños de ella .

La tabla más grande que he construido antes era (creo) 32 millones de filas, pero no esperaba que fuera tan grande y realmente estaba forzando a MySQL.

La tabla se verá así:

surname name year rel bco bplace rco rplace 
Jones  David 1812 head Lond Soho  Shop Shewsbury 

Así, los pequeños enteros y varchars.

¿Alguien podría ofrecer consejos sobre cómo hacer que esto funcione tan rápido como sea posible? Ayudarían los índices de cualquiera de los códigos, o simplemente reducirían la velocidad de las consultas.

Gran parte de los datos en cada columna se duplicará muchas veces. Algunos campos no tienen mucho más que unos 100 valores posibles diferentes.

Las columnas principales en las que consultaré la tabla son: apellido, nombre, rco, rplace.

+2

Los índices aceleran la recuperación de datos y ralentizan la inserción de datos. En términos generales, son algo muy bueno: sugiero crearlos para cada una de las columnas en las que es probable que consultes la tabla. – eggyal

+3

30 millones de filas no son muchas para un RDBMS moderno. A menos que esté haciendo escaneos de tabla completa sin índices, por supuesto. –

+0

Gracias por tu comentario. Creo que ese fue uno de los problemas con mis 32 mil. mesa de fila Insertar filas estaba causando bloqueos. –

Respuesta

5

INDEX en una columna sujeta la búsqueda. Intente con INDEX columnas que usaría con más frecuencia en las consultas. Como mencionó, usaría las columnas surname, name, rco, rplace. Sugeriría que los indiques.

Dado que la tabla tiene 32 millones de registros, la indexación tomará algún tiempo, sin embargo, vale la pena la espera.

+0

Gracias. Solo estoy construyendo la mesa ahora. Así que puedo construir los índices en la inserción en lugar de en la c. 30 mil filas. –

+1

@KohjahBreese: compruebe en ambos sentidos, es posible que crear el índice * una vez * en 30 millones de filas sea más rápido que crear el índice de forma incremental. –

Cuestiones relacionadas