Table Structure (SalesPersonProduct)
SalesPersonProductId INT (PK, Clustered)
SalesPersonId INT (FK - non-unique - Nullable)
ProductId INT (FK - non-unique - Nullable)
AreaId INT (Not Null)
DistributionType INT (Not Null)
ItemOrder INT (Not Null)
ItemSize INT (Not Null)
The scenario: SalesPersonId is non-unique, in fact there could be 70 - 80 duplicates in this column. However, this is the only column used for reads and joins and currently does not have an index.
SalesPersonProductId is simply used as a PK for reference, updates to these table are handled through the PK but are very infrequent. Neither the PK or the SalesPersonId will be updated once a row has been added to the table.
The question:
Assume I can make no changes to the table structure, or related tables. Would I be better served changing the existing PK to an non-clustered index, and adding the SalesPersonId as a clustered index? OR just adding the SalesPersonId as a standard non-clustered index?
I'm aware behind the scenes the many non-unique values would be getting unique identifiers - however this column is used for virtually all reads and I would expect this would offer the best performance gain, though at the cost of the additional bytes now used to preserve "uniqueness" on this new clustered index.