sql >> Base de Datos >  >> RDS >> Sqlserver

SQL Server:¿cuándo usar el índice agrupado frente al no agrupado?

Solo quiero poner una palabra de advertencia:por favor, con mucho cuidado. ¡elija 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 eliges un bueno índice agrupado.

Es el más replicado estructura de datos 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 de su tabla.

Debe tener sumo 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 hace único, SQL Server lo hará por usted en segundo plano, lo que le costará un par de bytes por cada entrada multiplicado por el número de filas y el número de índices no agrupados que tener - ¡esto puede ser muy costoso!)

  • estático (nunca cambie - si es posible)

  • idealmente cada vez mayor por lo que no terminará con una horrible fragmentación del índice (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:un varchar(250) hace una clave de agrupamiento muy pobre

Cualquier otra cosa realmente debería ser de segundo y tercer nivel de importancia detrás de estos puntos...

Vea algunos de los de Kimberly Tripp (La reina de la indexación ) publicaciones de blog sobre el tema - cualquier cosa que haya escrito en su blog es absolutamente invaluable - léalo, digiéralo - ¡vívase de acuerdo con ello!