HACER y NO HACER para Índices

¿Qué son algunos DO y DONT para mejorar el rendimiento de la base de datos utilizando el índice?

Un DO sería un caso en el que se debería crear un índice u otro consejo relacionado con los índices que mejorará el rendimiento.

Un DONT será un caso cuando no se debe crear un índice u otra acción relacionada con el índice que pueda dañar el rendimiento.

Generalmente hablando:

1. No agregue un índice a menos que realmente lo necesite.

Cada índice hace que las escrituras sean más lentas …

2. Un índice se utilizará en las cláusulas where:

-- index on foo (bar) select bar from foo where bar = :bar; 

Por la misma razón, se usará en referencias de clave externa (en ambas tablas).

 -- index on foo (bar) if baz (bar) is frequently updated/deleted. create table foo (bar references baz (bar)); 

3. Se usará un índice para la clasificación, especialmente cuando está ligado a un límite:

 -- index on foo (bar) select bar from foo order by bar limit 10; 

4. Los índices de varias columnas son de vez en cuando útiles cuando ambos se aplican.

En este caso, coloque las condiciones donde primero, y la clave de ordenación al final:

 -- index on foo (baz, bar) select bar from foo where baz between :baz1 and :baz2 group by bar; 

5. Mantenga sus estadísticas de la tabla actualizadas.

Si las estadísticas de la tabla son basura, hay pocas posibilidades de que el optimizador use sus índices. Vacíe / analice manualmente su base de datos si es necesario.

6. El uso del índice depende de la repartición de su tabla.

Después de un cierto umbral de filas recuperadas, será más rápido hacer un escaneo completo de la tabla. Si su índice está en un campo booleano que divide más o menos su tabla en dos, nunca se usará.

Del mismo modo, si sus datos se almacenan de tal manera que la exploración de índice probablemente terminará accediendo aleatoriamente a casi cualquier página de disco aplicable para esa tabla, el planificador preferirá una exploración de tabla completa.

7. Considere índices parciales / de expresión cuando estén disponibles.

Si tiene un campo que tiene el mismo valor excepto el 10% de sus filas, considere un índice parcial (es decir, donde no ese valor). Esto da como resultado un índice mucho más pequeño sin obstaculizar su utilidad real.

Si constantemente está consultando una expresión aplicada a su columna y su plataforma ofrece índices de expresión, considere agregar un índice. Cuando se usa, la expresión no se evaluará para cada fila.

  1. Mida el rendimiento del sistema como un todo. Un índice puede ayudar a algunas consultas pero dañar inserta, actualiza y elimina.

  2. Crea el índice.

  3. Mida el rendimiento del sistema como un todo.

Si el rendimiento es mejor, deje el índice allí. Si el rendimiento es peor, elimínelo.