sql-server - 计算 SQL Server 数据库中字符串的哈希值——值得付出努力吗?

标签 sql-server database performance hash

假设我的 SQL Server 2005 数据库中有一个百万行的表 [mytable],其中包含列:

  • 身份证
  • 一些领域
  • 另一个领域
  • 网址

这个系统中一个非常常见的查询是:

从 [mytable] 中选择 *,其中 url = ' http://www.somesite.com/some/really/long/url '

哪个会给我更好的性能:

a) 为 Url 列添加索引。

b) 添加一个额外的“url_hash”列,其中包含与 url 对应的数字散列,然后计算该散列以用于我的 where 子句,例如:

从 [mytable] 中选择 *,其中 url_hash = some-computed-hash 和 url = ' http://www.somesite.com/some/really/long/url '

(b) 是否值得额外的复杂性?我需要在插入和选择时计算哈希值。

2009 年 3 月 30 日更新

ID为主键

另外,上面的查询不应该有“*”。相反,选择列表应该是表中的所有字段。

“*”只是速记 - 很抱歉造成混淆。

2009 年 3 月 31 日更新

还有,忘了说,url_hash 字段上会有一个索引。

最佳答案

如果您只选择所需的列(与“*”相反),并在“Url”和所选列上创建覆盖非聚集索引,您将获得非常高效的查找。

关于sql-server - 计算 SQL Server 数据库中字符串的哈希值——值得付出努力吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/699499/

相关文章:

java - 如何在系统应用程序的棉花糖中无需用户交互即可授予权限?

ios - Swift - 强制 View 在出现后加载数据

sql-server - SQL Server 在 Nvarchar(max) 字段中查询 XML?

sql - 替换字符串中的字符而不影响名称

sql - 按周汇总,即使是空行

mysql - 如何将我的 Unity3D 应用程序连接到 Mac OSX 上的 MySQL 数据库

mysql - 隔离级别是否仅适用于 SELECTS 而不适用于 UPDATES?

c# - 为什么将 High chance 子句放在嵌套 If else 的前面会降低性能?

python 和pymssql

sql-server - 数据库图(ER 图/表格布局)在衡量某些事物的分布时会是什么样子?