Conozco las diferencias principales entre índices agrupados y no agrupados y entiendo cómo funcionan realmente. Entiendo cómo los índices agrupados y no agrupados mejoran el rendimiento de lectura. Pero una cosa de la que no estoy seguro es cuáles serían las razones por las que elegiría una sobre la otra.
Por ejemplo: si una tabla no tiene un índice agrupado, ¿se debe crear un índice no agrupado y cuál es el beneficio de hacer?
Respuestas:
Solo quiero hacer una advertencia: ¡ elija con mucho cuidado su índice agrupado! Cada tabla de datos "normal" debe tener un índice agrupado, ya que tener un índice agrupado acelera muchas operaciones; sí, acelera , ¡incluso inserta y elimina! Pero solo si elige un buen índice agrupado.
Es la estructura de datos más replicada en su base de datos de SQL Server. La clave de agrupación también formará parte de todos y cada uno de los índices no agrupados en su tabla.
Debe tener mucho cuidado al elegir una clave de agrupación; debe ser:
estrecho (4 bytes ideal)
único (después de todo, es el "puntero de fila". Si no lo convierte en único, SQL Server lo hará por usted en segundo plano, lo que le costará un par de bytes por cada entrada multiplicada por el número de filas y el número de índices no agrupados tiene - ¡esto puede ser muy costoso!)
estático (nunca cambie, si es posible)
idealmente cada vez mayor para que no termine con una fragmentación de índice horrible (un GUID es todo lo contrario de una buena clave de agrupación, por esa razón en particular)
debe ser no anulable e idealmente también de ancho fijo - a
varchar(250)
hace una clave de agrupamiento muy pobreCualquier otra cosa debería ser un segundo y tercer nivel de importancia detrás de estos puntos ...
Vea algunas de las publicaciones del blog de Kimberly Tripp ( La reina de la indexación ) sobre el tema; todo lo que haya escrito en su blog es absolutamente invaluable; léalo, digígalo, ¡vívelo!
fuente
non clustered
índice por nosotros? cuales son su importancia ..?