I have a table named Players with these columns
Id, Name, Age
Id and Age are ints, and Name is a char(50).
I want to create a clustered index on this table, so that the table will be sorted in ascending order by the Name. I have found out that every table with a primary key already has a clustered index on the primary key, and that there can only be one clustered index on a table, and if I want to add another one, I have to drop the primary key constraint that's on the Id.
My Player.Id is already as a foreign key in multiple other tables, so I still want to have the primary key constraint on the Id, but I also want a clustered index to sort the records by the name.
How can I do that in SQL Server? I am using Microsoft SQL Server Management Studio.
CodePudding user response:
You need to:
- First remove all FK constraints to your table
Player - Then drop the primary clustered index on
Id - Create a new primary key with a non-clustered index on
Player.Id- use this command:ALTER TABLE dbo.Player ADD CONSTRAINT PK_Player PRIMARY KEY NONCLUSTERED (Id); - Then create a clustered index on
Player.Name - Re-establish all FK constraints from all your table, to
Player
