I am aware of the problem of using Identity columns as primary keys. I think I first read about it on Brent Ozar's blog. Basically, the most often accessed data is the most recently entered data, and with incrementing identity columns, this tends to focus all the database activity on the last page of the database, resulting in lots of contention and locks. It is recommended that your primary key be based on some meaningful column, (or columns), so that data is spread more evenly through the pages of the database.
Given that, here is the primary key I am trying to optimise:
Request_ID int --1234, 2326, etc
Department nchar(2) -- 'MP', 'SS', 'FR', etc
Condition_ID int identity
Condition_ID is necessary because (Request_ID + Department) is not unique. There can be multiple conditions within (Request_ID + Department).
Condition_ID is unique (being an identity col), but making it the primary key alone leads to the problem I mentioned above. Request_ID, while not an identity col is still a sequential number also leading to the same problem.
Department is at least varied (FR, SS, MP, CS, etc)
So, the question I have is this: Given what I have to work with, what would be a good primary key combination that avoids the problem I mentioned?
Would there be any benefit of making the Department the first column in the PK, followed by Request_ID, and then Condition_ID?