使用 nvarchar 作为外键怎么样?
Posted
技术标签:
【中文标题】使用 nvarchar 作为外键怎么样?【英文标题】:What about using a nvarchar as a foreign key? 【发布时间】:2014-02-26 05:21:31 【问题描述】:到目前为止,我的外键一直是唯一标识符或整数。
如果我使用 nvarchar 字段作为外键,它会对性能产生负面影响吗?还有其他需要注意的事项吗?
【问题讨论】:
this 相关吗? @AmitAgrawalnvarchar
可以是外键
是的,它会对性能产生不利影响 - 因为 varchar
的潜在大小以及它是可变长度的事实。另外:由于您正在比较一个字符串,您可能会遇到(a)拼写和(b)大小写字母的问题(如果您的排序规则有时区分大小写,有时不区分大小写)。总而言之 - 你可以使用 varchar
作为 FK - 但如果可能的话,我建议不要这样做
【参考方案1】:
虽然你可以将 nvarchar 作为外键,但我不建议你使用 nvarchar 作为外键。有很多原因,我认为其中一个非常重要的原因是,当您执行 JOINS 时,nvarchar 会比 int 慢。
如果我使用 nvarchar 字段作为外键,它会对性能产生负面影响吗?
是的,肯定会有性能问题,因为 int 使用 4 字节的数据并且通常比 NVARCHAR 更快地加入。
你也可以使用存储过程sp_spaceused
来检查使用的空间,将列作为int和nvarchar,你会发现不同的。
EXEC sp_spaceused 'TableName'
【讨论】:
以上是关于使用 nvarchar 作为外键怎么样?的主要内容,如果未能解决你的问题,请参考以下文章
SQL怎么写将表中的字段设置为主键后,由该表的另外一个字段作为外键.
外键为啥必须是唯一键?为啥至少唯一键才能作为其他表的外键?不唯一为啥不可以?