加入整数会比加入nvarchar更快吗?

时间:2013-08-13 20:32:52

标签: sql-server sql-server-2008 sql-server-2008-r2

如果使用整数键列而不是nvarchar(20),它是否会对性能产生重大影响?我假设连接中使用的所有字段都已编入索引。

3 个答案:

答案 0 :(得分:6)

INT应该比NVARCHAR(20)快,因为INT只有4个字节,因此您可以一次在内存中保存更多索引/数据。您应该始终尝试使用适用于所有列的最小数据类型。

答案 1 :(得分:2)

请查看以下帖子。

JOIN ON varchar VS join on int

基本上,int是最好的选择。

答案 2 :(得分:0)

使用integer速度更快,因为整数很容易存储在二进制文件10中,计算机比它们的字符更能理解这些任何语言。 DBMS必须将NVARCHAR转换为更大的二进制类型,NVARCHAR(20)INT是我们的示例。整数保存4个字节的数据,NVARCHAR(20) holds up to 42 bytes of data,这意味着这些数据中的任何一个的索引将彼此完全不同。变量字符类型的索引最多需要38个字节来索引,如果你需要所有那些额外的索引那么它就有意义了,但是一个整数已经拥有这么多可能的值。

换句话说,通过INT列进行索引和搜索会更快,因为数据库查看的信息较少。

请查看this answer,这可以支持我的主张。此链接讨论索引页面。