2009-06-19 6 views

Respuesta

5

Google es mi mejor amigo:

http://www.orafaq.com/node/926

El punto principal de este artículo es:

If 2 indexes (I1 and I2) exist for a table and 
    the number of columns in Index I1 is less or equal to the number of column in index I2 and 
    index I1 has the same columns in the same order as leading columns of index I2 
Then 
    If index I1 is UNIQUE then 
     If index I2 is used to support Foregh Key or for Index Overload then 
     Do Nothing 
     Else 
     Index I2 can be DROPPED 
     End If 
    Else 
     Index I1 can be DROPPED 
    End If 
End If 

Y yo Estoy de acuerdo con eso! De hecho, busque "índices duplicados" en Google para obtener diferentes tipos de respuesta.

+1

Esto es probablemente correcto en la mayoría de las circunstancias, pero vea mi respuesta para saber cuándo podría ser incorrecto soltar el índice superpuesto. –

1

El segundo índice es algo redundante: cualquier operación que use Index2 podría usar Index 1. Además, las escrituras serán un poco más lentas ya que hay otro índice para actualizar.

Dicho esto, Index2 no es del todo redundante, ya que podría ser un poco más rápido ya que el índice en sí probablemente será significativamente más pequeño.

1

existe la posibilidad de que si sus estadísticas no están actualizadas, el optimizador puede elegir el índice 2 cuando se necesita el índice 1. (Una pista para el optimizador resolvería eso, por supuesto.)

2

El segundo índice es diferente y no es redundante per se.

¿Qué hay de esta consulta:

SELECT DISTINCT ColA FROM TABLE WHERE ColA IS NOT NULL; 

Oracle puede responder a esta pregunta definitivamente del índice 2. Ahora, se espera que el índice 2 a ser pequeñas (menos los bloques) que el índice de 1. Esto significa, que es una mejor índice para la consulta anterior.

Si su aplicación nunca hace una consulta que se adapte Index2 mejor que Index1, entonces es redundante para su aplicación.

Los índices son siempre una compensación de rendimiento. Cuando se realiza una inserción, actualización o eliminación, hay trabajo adicional que hacer para mantener cada índice adicional.

¿Esto es más que compensado por el aumento del rendimiento proporcionado por el índice? Depende de su aplicación y uso de datos.

Cuestiones relacionadas