2011-07-11 8 views
6

¿Hay alguna necesidad de agregar un índice a una clave externa en SQL Server 2008 o se maneja de manera predeterminada? En muchas de mis tablas, tengo un FK que apunta a la tabla de cuentas de usuario y la mayoría de las selecciones están hechas con este WHERE Account_FK = id. Así que el índice podría ser una victoria de rendimiento rápido aquí, espero.Índice en clave externa o no en SQL Server 2008

Respuesta

4

Como regla, quiere que todas sus claves JOIN tengan índices, de modo que sí agregue un índice.

Si se trata de una clave compuesta, asegúrese de colocar todos los campos relevantes en la lista de claves de índice en el orden apropiado.

Que yo sepa, las únicas veces que se crea automáticamente un índice en SQL Server es cuando agrega una clave primaria a un montón (tabla no indexada): el PK se asigna automáticamente como la clave del índice agrupado; o, como señala Damien a continuación, cuando agrega una restricción UNIQUE a un campo o conjunto de campos.

+1

Las restricciones PRIMARY KEY y UNIQUE agregan un índice automáticamente (con el mismo nombre que la restricción, es decir, cómo se implementan), y esto puede ser agrupado o no agrupado (con, como usted dice, el valor predeterminado es crear un índice agrupado si se trata de una restricción PK y aún no hay un índice agrupado). –

+0

@Damien - buen punto, se olvidó de la restricción 'ÚNICA'. – JNK

3

Una razón no tan obvia para agregar un índice al FK es para cuando quiere eliminar una fila en la tabla maestra (su tabla de cuenta de usuario). SQL Server realiza una comprobación de cada relación FK para ver si hay alguna fila que impida la eliminación, y esa comprobación es mucho más rápida con un índice en la columna FK en la (s) tabla (s) secundaria (s).

Cuestiones relacionadas