【问题标题】:What about using a nvarchar as a foreign key?使用 nvarchar 作为外键怎么样?
【发布时间】:2014-02-26 05:21:31
【问题描述】:

到目前为止,我的外键一直是唯一标识符或整数。

如果我使用 nvarchar 字段作为外键,它会对性能产生负面影响吗?还有其他需要注意的事项吗?

【问题讨论】:

  • this 相关吗?
  • @AmitAgrawal nvarchar 可以是外键
  • 是的,它会对性能产生不利影响 - 因为 varchar 的潜在大小以及它是可变长度的事实。另外:由于您正在比较一个字符串,您可能会遇到(a)拼写和(b)大小写字母的问题(如果您的排序规则有时区分大小写,有时不区分大小写)。总而言之 - 你可以使用 varchar 作为 FK - 但如果可能的话,我建议不要这样做

标签: sql sql-server sql-server-2008 sqlperformance


【解决方案1】:

虽然你可以将 nvarchar 作为外键,但我不建议你使用 nvarchar 作为外键。有很多原因,我认为其中一个非常重要的原因是,当您执行 JOINS 时,nvarchar 会比 int 慢。

如果我使用 nvarchar 字段作为外键,它会对性能产生负面影响吗?

是的,肯定会有性能问题,因为 int 使用 4 字节的数据并且通常比 NVARCHAR 更快地加入。

你也可以使用存储过程sp_spaceused来检查使用的空间,将列作为int和nvarchar,你会发现不同的。

EXEC sp_spaceused 'TableName'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    相关资源
    最近更新 更多