¿Todavía necesita indexación después de la normalización de la base de datos

14

Después de haber realizado una buena normalización, ¿todavía necesita indexar la tabla? ¿Cómo va a afectar esto al rendimiento? ¿Incluso afectará el rendimiento de alguna manera después de una buena normalización?

¿Qué columnas suelen estar indexadas si ya tiene la clave principal y la clave externa?

Parece que ya es efectivo normalizar una base de datos. Pero, podría haber omitido cómo la indexación afecta a la base de datos. ¿Esto solo es efectivo cuando se utilizan consultas? ¿Cómo funciona / funciona y hace que una base de datos sea mejor?

    
pregunta Franz Noel 06.01.2013 - 23:16
fuente

6 respuestas

34

Sí. De hecho, es muy posible que deba prestar más atención a sus índices. La normalización se trata de almacenamiento óptimo . A menudo, esto está reñido con la velocidad de recuperación , ya que se utilizan consultas más complejas con uniones complicadas. A veces, las personas que mantienen bases de datos que requieren altas velocidades de recuperación se normalizarán o organizarán sus datos en estructuras ligeramente menos normalizadas para facilitar la recuperación.

    
respondido por el GrandmasterB 07.01.2013 - 05:25
fuente
56

Creo que entendiste mal lo que hace la indexación para el rendimiento de la base de datos.

Un índice ayuda a la base de datos a encontrar filas. Los índices son estructuras de datos especializadas que, a cambio de espacio de disco extra y algo de rendimiento al insertar y actualizar, ayudan al motor de la base de datos a ubicarse en filas coincidentes.

Debido a que requieren espacio y costo extra (un mínimo de rendimiento) para mantenerlos actualizados, usted, como diseñador de bases de datos, debe crear índices explícitamente para adaptarse a sus patrones de consulta y aplicación.

Los índices son ortogonales a la normalización de la base de datos.

    
respondido por el Martijn Pieters 06.01.2013 - 23:21
fuente
4

Sí, después de la normalización, aún necesita indexación.

Las tablas con las que está trabajando se benefician tanto como las tablas que tenía antes de la normalización. En realidad, por sí solos son lo mismo: tablas.

Una cosa que debes tener en cuenta, sin embargo, los índices te ayudan a encontrar tu camino a través de tus datos más rápido. La normalización de un diseño de una base de datos siempre es buena, pero a veces, por razones de rendimiento, debe normalizar la implementación. Pero eso es solo caso por caso.

    
respondido por el Pieter B 07.01.2013 - 00:15
fuente
2

Sí.

Los índices son un método para acelerar la búsqueda de datos. Algunas consultas son por claves primarias, que generalmente son indexadas implícitamente por el motor de base de datos, pero es probable que otras consultas utilicen otras columnas. A menudo, algunas consultas buscan por columnas que ni siquiera son únicas y, por lo tanto, no pueden convertirse en claves primarias después de cualquier normalización. Probablemente tendrás que indexar tales columnas.

Solo hay una forma de saber qué índices crear. Tome todas las consultas en la aplicación, encuentre parámetros de ejemplo representativos para ellos y haga que el motor de la base de datos muestre sus planes de consulta (todos los motores de la base de datos tienen EXPLAIN , EXPLAIN QUERY PLAN o comando similar; se llama de manera diferente en diferentes motores) y compruebe cuánto tiempo. toman. Eso crea índices que aceleran los que eran lentos. Y no se olvide de volver a soltar los índices que intentó pero no ayudó a evitar el desperdicio de recursos.

    
respondido por el Jan Hudec 07.01.2013 - 09:21
fuente
1

Los índices son generalmente necesarios en todas las tablas, excepto en las más pequeñas. Casi todas las claves externas deben estar indexadas, y solo configurar un FK no significa que tenga un índice (al menos no en algunas bases de datos, verifique la documentación de la base de datos). Campos en los que se une o usa con frecuencia en donde las cláusulas deben indexarse si son las que se beneficiarían (necesita una cierta cantidad de variabilidad en los datos para que los booleanos no se beneficien, por ejemplo) y en los que es posible indexar.

Sin embargo, cada índice ralentiza las inserciones \ actualizaciones \ eliminaciones al acelerar las selecciones, así que elija sus índices con cuidado.

Los índices son críticos para un rendimiento aceptable en una base de datos.

    
respondido por el HLGEM 14.03.2013 - 22:17
fuente
0

Para una tercera forma normal, definitivamente necesitarás índices en todas las claves principales.

La necesidad de otros índices depende de cómo se utiliza su base de datos. Por ejemplo, si busca regularmente clientes en un código postal en particular, entonces sería una buena idea indexar la columna zip_code en la tabla de clientes.

    
respondido por el James Anderson 15.03.2013 - 06:55
fuente

Lea otras preguntas en las etiquetas