SQL Server VARCHAR(2)连接性能与INT

时间:2009-12-18 12:57:35

标签: sql sql-server tsql string

我有一张q-gram表(2个字母的字符串)。我需要在CHAR(2)字段中加入另一个表。

将这些2-gram转换为数字(例如aa = 1,ab = 2,ac = 3)并将此表和引用表中的字段转换为INT并使用INT连接会更快吗?而?

亲切的问候

彼得

4 个答案:

答案 0 :(得分:1)

可能不是。如果你是的话,最好使用smallint而不是int。另外,我不确定有一个varchar(2)列是否有意义。拥有varchar列会产生额外的开销,并且最多只保存一个字节。

您将拥有多少行数据?

答案 1 :(得分:1)

,这可能不会更高效,此外,您还必须有一个额外的表来存储这些映射。

这将是一个额外的 JOIN 以及。

请记住为您的加入列应用正确的索引。

答案 2 :(得分:0)

这会是你的瓶颈吗?是否值得增加复杂性?

那就是说,你也可以把它CHAR(2)

答案 3 :(得分:0)

根据我的经验,将一个连接的键从字符串(特别是CHAR(2))更改为INT将不会产生可测量的差异。这是因为您的大部分开销是I / O而不是CPU。

一旦你进入更长的字符串(尤其是Unicode字符串),你就可以开始测量差异了。但即便如此,我认为由于数据和索引中的记录大小,它更多地与增加的I / O有关。