如果在二进制列而不是字符串列上创建索引,我们是否有任何性能优势。哪两个会很快。我知道与数值相比,varchar会很慢。由于二进制值必须直接读取,我预计它应该快速可能禁食。
修改
实际用例是如果我有GUID列,我可以使用CHECKSUM或HASHBYTES来避免字符串比较。
我知道我们无法在MAX
上创建索引。它只涉及varchar(25),varbinary(25),int。 varchar(max)没有意义
答案 0 :(得分:2)
这取决于列的大小,但对于相同大小的两列,varbinary 通常更快。这里涉及的另一个因素是用于列的排序规则。 Sql Server中的默认排序规则不区分大小写,这意味着出于比较目的SOME RANDOM KEY
,some random key
,并且其每个排列都是相同的值,因此数据库必须在比较和排序这些键时要做额外的工作,以了解哪些值和哪些值匹配其他值:它不仅仅是一个直接的逐字节比较。