2009-06-01 14 views

Respuesta

8

Una consulta que selecciona solo unos pocos campos puede ejecutarse completamente en un índice. Por ejemplo, si usted tiene un índice en (OrderId) esta consulta requeriría una búsqueda en la tabla:

select Status from Orders where OrderId = 42 

Pero si se agrega un índice compuesto de (OrderId, Estado) el motor puede recuperar toda la información que necesita de la índice.

Un ordenamiento en columnas múltiples puede beneficiarse de un índice compuesto. Por ejemplo, un índice en (apellido, nombre) se beneficiaría esta consulta:

select * from Orders order by LastName, FirsName 

A veces tiene una constrant único en múltiples columnas. Digamos, por ejemplo, que reinicia los números de pedido todos los días. Entonces OrderNumber no es único, pero (OrderNumber, OrderDayOfYear) sí lo es. Puede aplicar eso con un índice compuesto único.

Estoy seguro de que hay muchos más usos para un índice compuesto, solo con una lista de algunos ejemplos.

+0

donde OrderId = 42 => no hay necesidad de compuesto, solo OrderId. Morevoer a composite (Id, OrderId) no será de ayuda; puede usarse solo para consultas que usan Id o Id y OrderId. No soy un experto en DB, pero no estoy seguro de que un índice compuesto (cuando no está agrupado) sea realmente útil para un select * –

+0

@Guillaume: significa un índice (OrderId, Estado), editado en la respuesta. – Andomar

14

Los índices compuestos son útiles cuando sus consultas SELECT utilizan esas columnas frecuentemente como criterios en sus cláusulas WHERE. Mejora la velocidad de recuperación. Debes evitarlos si no son necesarios.

Este article proporciona información realmente buena.

+1

+1 para el artículo –

+0

+1 para la buena referencia. ¿Hay algún artículo similar para Oracle? – hsalimi

Cuestiones relacionadas