ventajas soporta segundo por optimizar lentas eficientes desventajas cuantas consultas sql database sqlite indexing rdbms-agnostic

soporta - optimizar consultas mysql explain



¿Cuáles son las desventajas de tener muchos índices? (4)

Recientemente, aceleré una consulta complicada por un orden de magnitud al darle a SQLite un buen índice para trabajar. Los resultados de este tipo me hacen preguntarme si debería indexar muchos otros campos que se usan comúnmente para las cláusulas JOIN u ORDER BY. Pero no quiero mostrarme demasiado entusiasta y volverse contraproducente: asumo que debe haber algunas razones para no crear índices, o cada campo se indexará de forma predeterminada.

Estoy usando SQLite en este caso, pero, por supuesto, el consejo sin base de DBMS también es bienvenido.


El costo de un índice en el espacio en disco es generalmente trivial. El costo de escrituras adicionales para actualizar el índice cuando la tabla cambia a menudo es moderado. El costo en el bloqueo adicional puede ser grave.

Depende de la relación lectura / escritura en la tabla y de la frecuencia con la que se utiliza el índice para acelerar una consulta.


Los índices ralentizan las inserciones y actualizaciones (que pueden convertirse en un problema realmente serio con el bloqueo) y cuestan espacio en el disco. Eso es practicamente todo.


Los índices utilizan el espacio del disco para almacenar y toman tiempo para crear y mantener. Los que no se usan no dan ningún beneficio. Si hay muchos índices candidatos para una consulta, la consulta se puede ralentizar haciendo que el servidor elija el "incorrecto" para la consulta.

Utilice esos factores para decidir si necesita un índice.

Por lo general, es posible crear índices que NUNCA se usarán, por ejemplo, e indexar en un campo (no nulo) con solo dos valores posibles, es casi seguro que será inútil.

Debe explicar las consultas de su propia aplicación para asegurarse de que las que se realizan con frecuencia utilizan índices sensibles, si es posible, y no cree más índices de los necesarios para hacerlo.


Para probar su aplicación particular, puede poner "EXPLAIN QUERY PLAN" delante de cualquier consulta que ejecute y verifique los resultados. Le mostrará dónde está o no está usando los índices.

De esa manera, puede determinar dónde podría usar más índices y dónde no harían una diferencia.

Sqlite explicar

Utilizo SqliteSpy para realizar consultas de prueba manuales que parecen estar causando problemas.