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