【问题标题】:SQL Server performance optimizationSQL Server 性能优化
【发布时间】:2019-12-06 20:51:30
【问题描述】:

我有存储文件的表。我将 SHA256 哈希存储在列中以唯一标识文件。在插入新文件之前,我使用哈希检查重复文件,如果它已经存在,我不插入。

例如我的查询可以是:

select filename 
from filetable 
where filehash = 'xyz'

现在只有几百个文件。

当这个数字明年增长到几十万时,我该如何优化性能?

【问题讨论】:

  • 表现什么?您有疑问吗?
  • 哈希列是否有唯一索引?如果没有,你需要添加它
  • 只添加一个索引
  • 我可能是错的,但这个问题听起来像是一个糟糕的计划。如果目标是为每个文件设置唯一标识符,则不需要 SHA256,而是可以在每次添加新行时使用表的自动 id 功能来创建唯一标识符。如果目标是确保某些数据是唯一的(例如,我不想重复使用相同的名称,所以我将散列该名称并查看它是否已经存在),那么 SQL Server 也可以通过唯一的指数。所以我很想知道你的用例。可能有更好的方法

标签: sql sql-server performance hash query-optimization


【解决方案1】:

对于该特定查询,只需添加索引:

create index ix1 on filetable (filehash);

如果您想让它更快(可能不需要),您可以创建一个覆盖索引

create index ix1 on filetable (filehash, filename);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多