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