Sql 在nvarchar上加入与在int上加入相比,性能差异有多大

Sql 在nvarchar上加入与在int上加入相比,性能差异有多大,sql,sql-server,sql-server-2005,sql-server-2008,Sql,Sql Server,Sql Server 2005,Sql Server 2008,我知道nvarchar上的join比较慢,因为索引比nvarchar大,每个字符使用2个字节,但int始终是4个字节。联接性能差异是否显著?有没有强有力的理由避免加入nvarchar?我找不到任何有关此主题的MSDN文章。至少8x CPU。这是比较nvarchar和varchar的显著增加:unicode排序和比较规则比直接的varchar更复杂 因此,假设varchar和int相等(它们不相等),nvarchar与int相比将有开销 然后,逐字节(“1234”与1234)比较10个字节

我知道nvarchar上的join比较慢,因为索引比nvarchar大,每个字符使用2个字节,但int始终是4个字节。联接性能差异是否显著?有没有强有力的理由避免加入nvarchar?我找不到任何有关此主题的MSDN文章。

至少8x CPU。这是比较nvarchar和varchar的显著增加:unicode排序和比较规则比直接的varchar更复杂

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

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


最后,如果nvarchar超过450个字符,则无法对其编制索引,因为索引键的最大宽度为900字节。

我希望性能差异可以忽略不计,但您确实应该针对您的具体情况进行尝试。@Sjoerd:几十行以上,是的。否则将是巨大的