I have a table in SQL Server containing some user related info where the primary key is id
(auto increment by 1) and has a column named userId
. Each user can only has one record in the table, so I have added a unique constraint
on column userId
. As per SQL Server docs, SQL Server will automatically create an index for the unique constraint column.
For the usage on the table, there can be many update and insert operations, as well as select
operations, and that's where my questions arise.
I see that the index that got created automatically by SQL Server on the unique constraint column is a non-clustered index, where it is good for update and insert operations, but for select operation, it is not as fast as the clustered index. (ref. differences-between-a-clustered-and-a-non-clustered-index)
For this table, there can be many
select by userId
operations. From the performance perspective, should a clustered index onuserId
be created, given thatclustered index
is the fastest for read operations ?If yes, but a non-clustered index has already been automatically created on column
userId
, could a clustered index still be created on theuserId
column? (I have found some similar question, from the answers, it seem like if doing so, it will first search through the non-clustered index, then it will points to the clustered index and continue that search non-clustered-index-and-clustered-index-on-the-same-column)