Después de haber realizado una buena normalización, ¿aún necesita indexar la tabla? ¿Cómo va a afectar esto el rendimiento? ¿Afectará incluso el rendimiento de alguna manera después de una buena normalización?
¿Qué columnas suelen indexarse si ya tiene la clave primaria 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 la base de datos. ¿Esto solo es efectivo cuando se utilizan consultas? ¿Cómo funciona / funciona y mejora una base de datos?
database
sql
indexing
normalization
Franz Noel
fuente
fuente
Respuestas:
Si. De hecho, es muy posible que deba prestar más atención a sus índices. La normalización se trata de un almacenamiento óptimo . Eso a menudo está en desacuerdo con la velocidad de recuperación , ya que se utilizan consultas más complejas con combinaciones complicadas. A veces, las personas que mantienen bases de datos que requieren velocidades de recuperación rápidas se normalizarán o organizarán sus datos en estructuras ligeramente menos normalizadas para facilitar la recuperación.
fuente
Creo que entendió 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 en disco adicional 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 adicional y un costo (un mínimo de) rendimiento para mantenerlos actualizados, usted, como diseñador de la base de datos, debe crear índices explícitamente para adaptarse a su aplicación y patrones de consulta.
Los índices son ortogonales a la normalización de la base de datos.
fuente
Sí, después de la normalización, todavía 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.
Sin embargo, una cosa que debe tener en cuenta es que los índices lo ayudan a encontrar su camino más rápidamente. La normalización de un diseño de una base de datos siempre es buena, pero a veces por razones de rendimiento hay que desnormalizar la implementación. Pero eso es solo caso por caso.
fuente
Si.
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 la base de datos, pero es probable que otras consultas usen otras columnas. A menudo, algunas consultas buscan por columnas que ni siquiera son únicas y, por lo tanto, no pueden convertirse en claves principales después de cualquier normalización. Probablemente tendrá que indexar dichas 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 ellas 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 un comando similar; se llama de manera diferente en diferentes motores) y pruebe cuánto tiempo tardan. Que crear índices que aceleren los que fueron lentos. Y no olvides volver a soltar los índices que intentaste pero no ayudaste a evitar el desperdicio de recursos.fuente
Los índices generalmente se necesitan en todas las tablas excepto en las más pequeñas. Casi todas las claves externas deben indexarse y solo configurar un FK no significa que tenga un índice (al menos no en algunas bases de datos, consulte la documentación de db). Campos en los que se une o utiliza con frecuencia en donde las cláusulas deben indexarse si son las que se beneficiarían (necesita una cierta variabilidad en los datos para que los booleanos no se beneficien, por ejemplo) y aquellas en las que es posible indexar.
Sin embargo, cada índice ralentiza las inserciones \ actualizaciones \ eliminaciones mientras acelera las selecciones, así que elija sus índices con cuidado.
Los índices son críticos para un rendimiento aceptable en una base de datos.
fuente
Para una tercera forma normal, definitivamente necesitará índices en todas las claves principales.
Si necesita otros índices depende de cómo se use su base de datos. Por ejemplo, si busca clientes regularmente en un código postal en particular, puede ser una buena idea indexar la columna zip_code en la tabla de clientes.
fuente