In SQL Server, does the system automatically create an index for every primary key and for every foreign key, or only guarantee automatic indexing for primary keys?

Difficulty: Easy

Correct Answer: Automatic index for primary keys; foreign keys are not auto-indexed

Explanation:


Introduction / Context:
Keys and indexes are related but distinct. Primary keys enforce uniqueness and are automatically backed by a unique index. Foreign keys enforce referential integrity, but SQL Server does not automatically create an index for them.


Given Data / Assumptions:

  • Primary key defined via PRIMARY KEY constraint.
  • Foreign key defined via FOREIGN KEY constraint.
  • No explicit CREATE INDEX statements provided.


Concept / Approach:
When you add a PRIMARY KEY constraint, SQL Server creates a unique index (clustered by default if not otherwise specified). For FOREIGN KEY constraints, indexing is recommended for join and delete/update performance, but it is not automatic; you must create a supporting index explicitly.


Step-by-Step Solution:
Create table with PK: PK yields unique index (viewable in sys.indexes).Add FK referencing parent table; no index appears automatically on the FK column(s).Manually add: CREATE INDEX IX_Child_FK ON dbo.Child(ParentID);


Verification / Alternative check:
Query sys.indexes after adding PK and FK to observe index presence/absence. Execution plans for joins show benefits of indexing foreign keys.


Why Other Options Are Wrong:
Automatic indexes on FKs do not exist. Recovery model has nothing to do with automatic key indexing. Saying none are auto-indexed ignores PK behavior.


Common Pitfalls:
Assuming FKs are indexed; suffering slow deletes/updates due to missing FK indexes.


Final Answer:
Automatic index for primary keys; foreign keys are not auto-indexed

More Questions from SQL Server 2000

Discussion & Comments

No comments yet. Be the first to comment!
Join Discussion