在SQL Server 2012中的性能方面,char(8)字段的非聚集索引与bigint字段相同

时间:2013-09-06 14:02:09

标签: sql sql-server database performance indexing

我通常会尽量避免为非数字字段创建索引,但在这种情况下,我必须为定义为char(8)的字段设置非聚集索引。

如果我没有弄错,那么性能应该与BigInt字段的非聚集索引相同,因为它们都需要8个字节的存储空间。因此,如果性能相同,则只需创建非聚集索引而不更改任何内容,但如果出于某种原因,BigInt的性能会更好,那么我可以考虑将值存储为BigInt而不是char(8) )。

谢谢!

1 个答案:

答案 0 :(得分:1)

简单的答案是bigint使用与char(8)相同的存储空间,但可能会提供稍快的性能,因为在插入或搜索索引之前,使用的排序规则可能需要进行一些转换 - 例如,如果使用不区分大小写的排序规则。无论最小开销是否超过将SQL转换为bigint之外的最小开销,正如您所建议的那样,您只能通过设置合适的测试方案并对其进行分析来衡量。