Archive for April 23rd, 2009
Making an index UNIQUE
From Stack Overflow:
In SQL Server, if I know an index will have unique values, how will it affect performance on
INSERT
's orSELECT
's if I declare it as such?If the optimiser knows the index is
UNIQUE
, how will that affect the query plan?I understand that specifying uniqueness can serve to preserve integrity, but leaving that discussion aside for the moment, what are the perfomance consequences?
Let's see how does a UNIQUE
index perform compared to a non-UNIQUE
one.
Indexes mentioned hereafter are considered to be built on a same intrinsically unique dataset. I will leave consistency issues aside, focusing only on performance details.
A UNIQUE
index, contrary to popular opinion, does not have any performance drawbacks on DML
compared to a plain, non-UNIQUE
index.
When the engine tries to insert a new row into the indexed table, being the index UNIQUE
or not, it performs the following steps:
Read the rest of this entry »