对varbinary列进行索引vs varchar vs int - 这很快

时间:2015-08-22 18:25:09

标签: sql sql-server database database-performance

如果在二进制列而不是字符串列上创建索引,我们是否有任何性能优势。哪两个会很快。我知道与数值相比,varchar会很慢。由于二进制值必须直接读取,我预计它应该快速可能禁食。

修改

实际用例是如果我有GUID列,我可以使用CHECKSUM或HASHBYTES来避免字符串比较。

我知道我们无法在MAX上创建索引。它只涉及varchar(25),varbinary(25),int。 varchar(max)没有意义

1 个答案:

答案 0 :(得分:2)

这取决于列的大小,但对于相同大小的两列,varbinary 通常更快。这里涉及的另一个因素是用于列的排序规则。 Sql Server中的默认排序规则不区分大小写,这意味着出于比较目的SOME RANDOM KEYsome random key,并且其每个排列都是相同的值,因此数据库必须在比较和排序这些键时要做额外的工作,以了解哪些值和哪些值匹配其他值:它不仅仅是一个直接的逐字节比较。