Recently I was asked to find all the Primary keys that are not clustered Indexes in the database.I constructed this script which will help us to locate the primary keys in the database which are not clustered index.
SELECT idx.name AS IndexName
, fg.name AS Filegroup
, object_name(idx.object_id) AS TableName
WHEN index_id = 1 THEN
WHEN index_id = 0 THEN
END AS TypeOfIndex
WHEN idx.is_primary_key = 1 AND index_id > 1 THEN
'Primary key as Unique Non Clustered Index'
WHEN idx.is_primary_key = 1 AND index_id = 1 THEN
'PK and Clustered'
END AS PrimaryKeyAsNonCLIndex
JOIN sys.indexes idx
ON fg.data_space_id = idx.data_space_id
JOIN sys.objects O
ON object_name(idx.object_id) = O.name
object_name(idx.object_id) NOT LIKE 'sys%'
AND idx.is_primary_key = 1
AND index_id > 1
It is strange that one can ask simple questions about extended events or Hekaton at professional events and conferences without feeling embarrassed, yet nobody likes to ask vital questions about SQL Server primary keys and foreign keys. Fear not, here are 13 questions you were too shy to ask, answered.
Every database developer uses keys, but without always understanding all the ramifications. They come with few hard and fast rules, but if you get them right from the start with a database design, the whole process of database development is simpler, and the result is likely to perform better. We asked Phil for advice, little knowing that the explanation might take a while.