如果使用整数键列而不是nvarchar(20),它是否会对性能产生重大影响?我假设连接中使用的所有字段都已编入索引。
答案 0 :(得分:6)
INT
应该比NVARCHAR(20)
快,因为INT
只有4个字节,因此您可以一次在内存中保存更多索引/数据。您应该始终尝试使用适用于所有列的最小数据类型。
答案 1 :(得分:2)
答案 2 :(得分:0)
使用integer
速度更快,因为整数很容易存储在二进制文件1
和0
中,计算机比它们的字符更能理解这些任何语言。 DBMS必须将NVARCHAR
转换为更大的二进制类型,NVARCHAR(20)
和INT
是我们的示例。整数保存4个字节的数据,NVARCHAR(20)
holds up to 42 bytes of data,这意味着这些数据中的任何一个的索引将彼此完全不同。变量字符类型的索引最多需要38个字节来索引,如果你需要所有那些额外的索引那么它就有意义了,但是一个整数已经拥有这么多可能的值。
换句话说,通过INT
列进行索引和搜索会更快,因为数据库查看的信息较少。
请查看this answer,这可以支持我的主张。此链接讨论索引页面。