¿Cuáles son las reglas generales con respecto al uso de índices compuestos? ¿Cuándo debería usarlos, y cuándo debería evitarlos?Cuándo usar índices compuestos?
Respuesta
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.
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 para el artículo –
+1 para la buena referencia. ¿Hay algún artículo similar para Oracle? – hsalimi
- 1. ¿Cómo funcionan los índices compuestos?
- 2. Cassandra usando índices compuestos y secundarios juntos
- 3. Índices compuestos en Mongo y clasificación
- 4. Índices compuestos de Mongo, usando menos que en una consulta
- 5. MongoDB: índices compuestos únicos y dispersas con valores dispersos
- 6. ¿Cómo saber cuándo usar los índices y qué tipo?
- 7. Reconstrucción de índices SQL - ¿Cuándo?
- 8. ¿Cómo puedo usar Boost.Bind en tipos compuestos?
- 9. Cuándo usar categorías y cuándo usar subclases?
- 10. Cuándo usar Pepino y cuándo usar RSpec?
- 11. cuándo usar Tarea y cuándo usar Subproceso?
- 12. Cuándo usar undef_method, y cuándo usar remove_method?
- 13. Cuándo usar Ruby vs Cuándo usar PHP
- 14. ¿Cuándo usar == y cuándo usarlo?
- 15. Cuándo usar STRAIGHT_JOIN con MySQL
- 16. Espacios de nombres largos/compuestos al usar C++/CLI
- 17. Controles compuestos de WPF
- 18. Componentes compuestos & ID
- 19. Parse out verbos compuestos
- 20. Cuándo utilizar <ui:include>, archivos de etiquetas, componentes compuestos y/o componentes personalizados?
- 21. ¿Cuándo debe usar JCR y cuándo debe usar JPA/RDBMS?
- 22. Cuándo usar un módulo y cuándo usar una clase
- 23. Cuándo usar vectores y cuándo usar matrices en C++?
- 24. Cuándo usar assert() y cuándo usar try catch?
- 25. Cuándo usar Requirejs y cuándo usar javascript incluido?
- 26. Cuándo deberíamos usar mutex y cuándo deberíamos usar el semáforo
- 27. Cuándo usar interfaces o clases abstractas? Cuándo usar ambos?
- 28. Cuándo usar el sistema() y cuándo usar execv *()?
- 29. Cuándo usar Class.isInstance() y cuándo usar el operador instanceof?
- 30. Cuándo usar componentes y cuándo usar extensiones en Yii?
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 * –
@Guillaume: significa un índice (OrderId, Estado), editado en la respuesta. – Andomar