Jusqu'à présent mes foreign keys ont toujours été des identifiants uniques ou un int.
Cela aurait-il un impact négatif sur les performances si j'utilisais un champ nvarchar comme key étrangère? Y a-t-il d'autres considérations dont je devrais me préoccuper?
Bien que vous puissiez faire nvarchar comme key étrangère, je ne vous suggérerais pas d'utiliser nvarchar comme key étrangère. Il y a beaucoup de raisons pour lesquelles je pense que celle qui est très essentielle est quand vous allez faire JOINS alors nvarchar sera plus lent comparé à int.
Cela aurait-il un impact négatif sur les performances si j'utilisais un champ nvarchar comme key étrangère?
Oui, il y aurait certainement un problème de performance car un int utilise 4 octets de données et est généralement plus rapide à JOIN que NVARCHAR.
Vous pouvez également vérifier l'espace utilisé en utilisant la procédure stockée sp_spaceused
en prenant la colonne int et nvarchar et vous findez la différence.
EXEC sp_spaceused 'TableName'