¿Alguien me puede decir cuándo un índice es malo?¿Cuándo es un índice (en un DBMS) un índice malo?
Respuesta
Si el campo nunca se utiliza, es un índice incorrecto (si sientes que las cosas son innecesarias son malas).
Muchas gracias ... pero ¿cómo se puede decir? un índice creado no usa – Anoop
Ejemplo: tiene un campo llamado: Otros_Comentarios. Nadie ha ingresado datos en el campo. Nadie ha consultado el campo. ¿Cuál sería el sentido de un índice en este campo? simplemente va a ralentizar cualquier inserción, eliminar o actualizar la actividad. – JeffO
Si nunca se realiza una búsqueda en la columna indexada y la tabla está muy actualizada, no obtendrá el beneficio del rendimiento para el que son las indeces. Por el contrario, podrías sufrir un golpe de rendimiento.
Muchas gracias – Anoop
El índice es para ayudarnos a buscar las filas más rápido.
Si la columna de índice es no utilizada para las búsquedas no tiene sentido definirla.
Si los valores de esa columna seguir cambiando con mucha frecuencia será un trabajo extra para el servidor de base de datos (para volver a clasificar)
Si hay demasiadas inserciones y eliminaciones de la mesa Será un trabajo adicional para el servidor
No olvide que los índices pueden estar en conjuntos de columnas. –
Muchas gracias ... pero ¿cómo podemos decir que una columna indexada no es utilizado con frecuencia – Anoop
@Johathan gracias por el hecho. @ venkat si no está utilizando las columnas indexadas en la cláusula join o where para seleccionar filas de la tabla, se usa con menos frecuencia. – TheVillageIdiot
Una circunstancia bajo la cual un índice es incondicionalmente malo es si hay otro índice que usa las mismas columnas (en el mismo orden) como prefijo:
CREATE INDEX ix_good ON SomeTable(Col1, Col2, Col3);
CREATE INDEX ix_bad ON SomeTable(Col1, Col2);
La mala índice es un desperdicio de espacio en disco y ralentiza las operaciones de modificar o ningún beneficio.
+1, pero enfatice la porción de "mismo orden". :) – KristoferA
Muchas gracias – Anoop
me he vinculado a ella antes, y voy a enlazar con él de nuevo, porque es excelente:
Muchas gracias – Anoop
Hay un impacto de rendimiento inherente de tener índices (creación y mantenimiento de la estructura) Por lo general, desea ese golpe para obtener el beneficio de escaneos más rápidos. Cuando no obtienes el beneficio, es solo una pérdida neta y ese es un índice malo.
razones posibles:
- índices nunca utilizado
- índices redundantes
- tablas que no son escaneados muy a menudo, pero actualizan continuamente (el golpe de tener el índice crece más los beneficios, ya que la tabla es rara vez escaneada).
- Tablas que se escanean con frecuencia y se actualizan continuamente. En este caso, puede obtener el beneficio de un índice y una actualización/inserción rápida al tener una tabla indexable para inserciones/actualizaciones y una tabla con índices para los escaneos que se actualiza en lotes diarios o por hora (hay casos en que esto no ocurre). No funciona, por supuesto. Entonces necesitas obtener un mejor hardware o rediseñar la aplicación si tienes un problema serio de rendimiento en tal caso).
¿Cómo encontrar sus malos índices? La mayoría de los RDBMS tienen opciones para mostrar el plan de consulta, allí puede ver si los índices que configura están siendo utilizados de la manera que espera. Esto me lleva a un consejo final, piense en sus índices, nunca cree uno "por las dudas".
Un índice es malo si usted nunca busca en él.Por ejemplo, un índice (Col1, Col2, Col3) es un desperdicio de recursos si nunca busca con Col1, Col2 y Col3 en la misma consulta.
Una cosa importante a tener en cuenta con los índices (aparte de la parte de "uso real" mencionada anteriormente) es la noción de selectividad.
Al construir índices, desea crear índices en columnas que tienen una buena posibilidad de "alta selectividad". Esto requiere cierta comprensión de los datos en la columna (que puede o no puede tener según su conocimiento del dominio/disponibilidad de los datos de muestra).
Selectividad = # de valores distintos/# total de filas
permite utilizar una tabla "Personas" con columnas para given_name, apellidos, sexo, edad
Por ejemplo, la creación de un índice en una columna de tales como Género (donde el género está limitado a NULL, M o F) no proporcionaría muchos beneficios durante una consulta (especialmente si la consulta ya resulta en un escaneo de tabla por otros motivos). En cualquier escenario, la selectividad de este índice sería extremadamente baja. Dependiendo del DBMS, usar este índice en realidad puede ser peor que un escaneo de tabla completo.
Sin embargo, la creación de un índice compuesto en (Given_name, Apellido) proporcionaría beneficios al ejecutar consultas contra esas columnas. La selectividad de este índice (para la mayoría de las poblaciones) sería bastante buena.
Un índice con selectividad de 1 es el ideal, sin embargo, la única manera de lograr una selectividad de 1 es tener un índice único en una columna que no admite nulos.
Además, tenga en cuenta que puede escribir fácilmente consultas para "realizar un seguimiento" de sus índices y su selectividad.
- 1. ¿Qué es un índice ortogonal?
- 2. ¿Qué es un índice?
- 3. ¿Qué DBMS ofrecen tablas organizadas por índice?
- 4. ¿Qué es un ÍNDICE ESPACIAL y cuándo debería usarlo?
- 5. ¿Qué es un índice permutado?
- 6. Índice en un Varchar?
- 7. Alterar un índice no único en un índice único
- 8. ¿Qué es un índice en SQL?
- 9. ¿Qué es un índice en SQLite?
- 10. .collect con un índice
- 11. phpMyAdmin Eliminar un índice
- 12. postgres crear un índice
- 13. Agregar un índice en un campo booleano
- 14. ¿La clave principal es automáticamente un índice?
- 15. PHP: Array_unshift no es un índice numérico
- 16. Cuándo crear un nuevo índice de SQL Server?
- 17. ¿Qué tan malo es tener un índice único y normal en la misma columna?
- 18. ¿Cuál es la diferencia entre un índice de tabla y un índice de vista?
- 19. ¿Es mejor un índice dividido globalmente (más rápido) que un índice no particionado?
- 20. Cómo seleccionar un índice SQL
- 21. ¿Cómo actualizar un índice Lucene.NET?
- 22. ¿Es necesario considerar dejar caer el índice existente, ya que es un prefijo del índice recomendado
- 23. Configuración de un índice xts
- 24. ¿Cómo funciona un índice geoespacial?
- 25. ¿Es posible tener un índice basado en función en MySQL?
- 26. ¿Cuál es la importancia del nombre del índice cuando se crea un índice en MySQL?
- 27. En R, ¿qué hace un índice negativo?
- 28. ¿Cómo creo un índice DESC en MySQL?
- 29. Propiedades de índice múltiple en un tipo?
- 30. ¿Reemplazar un char en un índice dado en una cadena?
Es posible que desee reelaborar su pregunta (y su título). Tal vez te refieres a "indexación incorrecta de SQL Table": "¿Qué parámetros debo tener en cuenta para definir un índice como un índice incorrecto y reemplazarlo?" –
Érase una vez un índice. Pero este no era un índice ordinario. Parecía normal, pero era un mal índice. Cuando nadie se dio cuenta, se desequilibró con los nodos de las hojas colgando de los nudos de las hojas en un desastre total. No solo tenía demasiados nodos de hoja, sino también una mala paleta de estadísticas. Entonces, un día, un hada llamada DBCC vino y le dijo al índice "¿por qué eres un mal índice? ¿No deberías ser un buen índice como todos los demás índices"? Ella agitó su varita mágica y reindexó. Después de eso, ella actualizó las estadísticas para hacer desaparecer las malas estadísticas. El índice decía al hada "... – KristoferA
Gracias maravillosa explicación – Anoop