2010-02-22 7 views
5

Tengo una tabla Document a la que hacen referencia muchas otras tablas mediante claves externas. Estoy intentando eliminar un registro de documento, y de acuerdo con mi plan de ejecución, SQL Server está realizando un análisis de índice agrupado en cada una de las tablas de referencia. Esto es muy dolorosoOptimizar la eliminación de una tabla a la que hacen referencia muchas teclas foráneas

Pensé que tener un FK automáticamente hizo un índice en los campos FK? ¿O estoy equivocado? ¿Realmente tengo que ir a mi base de datos poniendo un índice explícito en cada campo FK?

Respuesta

4

No, SQL Server no crea un índice automáticamente cuando crea una clave externa. Tienes que crear los índices tú mismo.

Post relacionados: Does a foreign key automatically create an index?

+0

¡Gracias, eso responde la pregunta! El mío es probablemente un duplicado ... –

1

El nombre "clave externa" es un poco engañoso, ya que, por lo general se asocia con "clave primaria", que está indexado automáticamente. Entonces, las personas pueden suponer que la clave externa también está indexada.

El acuerdo es que la "clave" aquí se refiere a una restricción. Entonces, al agregar una clave externa, realmente agrega una restricción. Index es un trato totalmente diferente.

+1

En realidad, todavía es diferente. "Clave" solo significa que puede usarlo como un identificador. Un índice es una estructura de acceso que se puede usar convenientemente para * implementar * una clave. El término 'clave externa' significa, "es una clave, pero no una clave de esta tabla, es la clave de otra tabla 'extranjera'". Y, por lo general, cuando las personas dicen 'clave externa', realmente significan 'restricción de clave externa', como en, una restricción que impone la integridad referencial de la clave externa. –

Cuestiones relacionadas