¿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 undef_method, y cuándo usar remove_method?
- 10. Cuándo usar Pepino y cuándo usar RSpec?
- 11. cuándo usar Tarea y cuándo usar Subproceso?
- 12. Cuándo usar Ruby vs Cuándo usar PHP
- 13. Cuándo usar categorías y cuándo usar subclases?
- 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. Parse out verbos compuestos
- 18. Componentes compuestos & ID
- 19. Controles compuestos de WPF
- 20. Cuándo utilizar <ui:include>, archivos de etiquetas, componentes compuestos y/o componentes personalizados?
- 21. Cuándo usar interfaces o clases abstractas? Cuándo usar ambos?
- 22. Cuándo usar Algoritmos genéticos vs. cuándo usar redes neuronales?
- 23. Cuándo usar Class.isInstance() y cuándo usar el operador instanceof?
- 24. Cuándo usar componentes y cuándo usar extensiones en Yii?
- 25. Cuándo usar vectores y cuándo usar matrices en C++?
- 26. ¿Cuándo debería usar require() y cuándo usar define()?
- 27. Cuándo usar Requirejs y cuándo usar javascript incluido?
- 28. Cuándo usar assert() y cuándo usar try catch?
- 29. Cuándo usar y cuándo no usar Try Catch Finally
- 30. Cuándo deberíamos usar mutex y cuándo deberíamos usar el semáforo
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