【问题标题】:How significant is the performance difference when joining on nvarchar versus on int加入 nvarchar 与 int 时的性能差异有多大
【发布时间】:2011-06-26 12:12:58
【问题描述】:

我知道加入 nvarchar 比较慢,因为索引比 nvarchar 更大,每个字符使用 2 个字节,但 int 始终是 4 个字节。连接性能差异是否显着?是否有充分的理由避免加入 nvarchar?我找不到任何有关该主题的 MSDN 文章。

【问题讨论】:

  • 我预计性能差异可以忽略不计,但您应该针对您的具体情况进行尝试。
  • @Sjoerd:几十行,是的。否则它很大

标签: sql sql-server sql-server-2005 sql-server-2008


【解决方案1】:

至少 8x CPU。这是比较 nvarchar 相对于 varchar 的可测量的增加:unicode 排序和比较规则比直接 varchar 更复杂。

因此,假设 varchar 和 int 相等(它们不相等),nvarchar 与 int 相比会有开销

然后,逐字节(“1234”与 1234)比较 10 字节与 4 字节。这也意味着每页更少的索引和数据条目的更宽键 = 更多的 IO。

最后,如果你的 nvarchar 超过 450 个字符,你不能索引它,因为索引键最大为 900 字节宽。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-20
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 2015-04-03
    • 2011-12-18
    • 2019-03-09
    • 2013-04-03
    相关资源
    最近更新 更多