SQL Server性能:GROUP BY int vs GROUP BY VARCHAR

时间:2011-08-25 21:15:30

标签: sql-server performance types group-by

按不同数据类型分组时是否存在性能差异?例如,如果我按INT分组,我是否会获得比使用varchar分组更好的性能?

3 个答案:

答案 0 :(得分:9)

我想说GROUP BY INT更快,因为在varchar字段中只检查了4个字节和n个字节。

答案 1 :(得分:4)

您是否仅根据数据类型在GROUP BY中的表现来决定数据类型?它是相同的数据,您只是决定如何存储123456,INTVARCHAR?您是否考虑过其他因素,例如在数字和字符串类型之间转换时的CPU成本,否则可能不需要?将整个表保存在缓存中所需的额外内存? VARCHAR表示长度的行开销?那么存储成本如何(例如1234567890需要4个字节作为INT,但'1234567890'需要10个字节+行开销作为VARCHAR)?压缩怎么样?如何将此列上的索引与表上的聚簇索引对齐,这会影响“已分组”的有用程度?

换句话说,我不会在泡沫中考虑GROUP BY表现。

答案 2 :(得分:3)

对int进行分组比在varchar上分组要快一些,但真正有所作为的是,如果该字段上有一个索引,数据库可以用于分组。