soporta - optimizar consultas mysql explain
Tabla SQL con entrada de "lista" vs tabla SQL con una fila para cada entrada (1)
Tengo una tabla
Sqlite
donde cada fila tiene la forma de:
value, "a,b,c,d,e,f,g,h,i,j", value3, value4
Donde mis consultas buscan un emparejamiento de valor,
%b%
usando
LIKE
.
¿Es más eficiente en términos de tiempo de consulta tener una tabla en la que cada fila sea una permutación:
value, a, value3, value4
...
value, j, value3, value4
Para que mis consultas sean ahora de valor, b usando el operador = esta vez.
Como nota, el caso de uso que me interesa tiene ~ 10,000 filas actualmente donde cada elemento de "lista" tiene un promedio de 8 entradas.
Sqlite
tanto
Sqlite
como
MySQL
porque tengo un problema similar tanto para un db con
MySQL
como para
Sqlite
.
Donde mis consultas buscan un emparejamiento de valor,% b% usando LIKE. ¿Es más eficiente en términos de tiempo de consulta tener una tabla en la que cada fila sea una permutación:
Definitivamente. Porque las consultas de tipo LIKE ''% something%'' no pueden usar índices . Entonces, las búsquedas van a ser muy lentas. Si eso no es suficiente, está utilizando más o menos un anti patrón RDBMS. más detalles aquí: ¿Es realmente tan malo almacenar una lista delimitada en una columna de base de datos?
una vez que divida su columna ''CSV'' en columnas separadas, puede llevarla aún más lejos normalizando la base de datos.