回答

收藏

在nvarchar和int上连接时,性能差异有多大

技术问答 技术问答 230 人阅读 | 0 人回复 | 2023-09-14

我知道nvarchar上的连接速度较慢,因为索引比nvarchar大,每个字符使用2个字节,而int始终为4个字节。联接性能差异是否显着?有什么强烈的理由要避免加入nvarchar?我找不到有关该主题的任何MSDN文章。1 H' j4 \8 |  ~& X( Z" q6 \' x
                % r- G2 T/ \' ?' h
解决方案:, g( S! Y8 l/ m4 v- \3 A
                ) j" P/ n1 s* _* c4 P" ^# x
7 J% v' U1 Y& ]
2 _8 d% D7 I3 d1 u2 _; W; }
                至少8x CPU。这是将nvarchar与varchar进行比较时可测量的增加:与纯正varchar相比,unicode排序和比较规则更加复杂。
" H6 N* c/ n; o4 Z6 ?因此,假设varchar和int相等(不是),则与int相比,nvarchar会有开销# F( |) i0 z( d$ u3 n
然后,一个字节接一个字节(“ 1234”对1234),您将比较10个字节对4个字节。这也意味着更宽的键,可以减少每页的索引和数据条目=更大的IO。+ |9 E2 s1 u* h% J& a
最后,如果您的nvarchar超过450个字符,则无法对其进行索引,因为索引键的最大宽度为900个字节。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则