【发布时间】:2015-08-22 18:25:08
【问题描述】:
如果在二进制列而不是字符串列上创建索引,我们是否有任何性能优势。两者哪个会快。我知道 varchar 与数值相比会很慢。由于必须直接读取二进制值,因此我希望它应该很快。
编辑:
实际用例是如果我有 GUID 列,我可以使用 CHECKSUM 或 HASHBYTES 来避免字符串比较。
我知道我们无法在 MAX 上创建索引。它只是关于 varchar(25)、varbinary(25)、int。 varchar(max)没有意义
【问题讨论】:
-
一件事:不能在超过 900 字节的列上创建索引。不能将大对象 (LOB) 数据类型 ntext、text、varchar(max)、nvarchar(max)、varbinary(max)、xml 或 image 的列指定为索引的键列
-
此列中存储了哪些数据?此内容的大小有多大?
-
为您的数据使用适当的数据类型。不要尝试退出智能 sql server。
-
uniqueidentifier存储为 16 字节二进制数据。不是字符串。 -
不,我没有将 GUID 存储到 varchar 列中。我只是比较存储在列中的两个 GUID 与相同长度的字符串列,哪个快,为什么?与字符串相比,我们可以在多大程度上看到 GUID 的性能更好,即在数据类型长度方面
标签: sql sql-server database database-performance