按不同数据类型分组时是否存在性能差异?例如,如果我按INT分组,我是否会获得比使用varchar分组更好的性能?
答案 0 :(得分:9)
我想说GROUP BY INT更快,因为在varchar字段中只检查了4个字节和n个字节。
答案 1 :(得分:4)
您是否仅根据数据类型在GROUP BY
中的表现来决定数据类型?它是相同的数据,您只是决定如何存储123456,INT
或VARCHAR
?您是否考虑过其他因素,例如在数字和字符串类型之间转换时的CPU成本,否则可能不需要?将整个表保存在缓存中所需的额外内存? VARCHAR
表示长度的行开销?那么存储成本如何(例如1234567890需要4个字节作为INT
,但'1234567890'需要10个字节+行开销作为VARCHAR
)?压缩怎么样?如何将此列上的索引与表上的聚簇索引对齐,这会影响“已分组”的有用程度?
换句话说,我不会在泡沫中考虑GROUP BY
表现。
答案 2 :(得分:3)
对int进行分组比在varchar上分组要快一些,但真正有所作为的是,如果该字段上有一个索引,数据库可以用于分组。