【问题标题】:SQL: Index nvarchar(2048) - Full text vs hashSQL:索引 nvarchar(2048) - 全文与哈希
【发布时间】:2011-05-24 15:17:58
【问题描述】:

我有两个表:table1 拥有一个列 nvarchar(2048)(唯一值),table2 拥有对 table1 id 的引用。

由于我无法索引nvarchar(2048),我的问题是,我应该向table1 添加一个全文索引还是应该向table1 添加另一个包含哈希的列,以便我可以在上面添加索引哈希列,然后对哈希列进行检查?

在检查table1 以查看值是否存在后,数据被插入table2(如果不存在,则将其插入table1,然后取回id 以存储在table2 中)。

不会在 SQL 中计算该哈希值。

就可扩展性、数据存储和性能而言,有什么更好的方法?

【问题讨论】:

标签: sql-server sql-server-2008 indexing


【解决方案1】:

我认为在这种情况下(唯一重要的是确保唯一性,不需要搜索/排序),您可以创建一个 CLR UDF 来生成哈希,一个计算的持久列保存由该函数计算的哈希,以及一个该列的唯一约束。

【讨论】:

  • 计算列不起作用。我需要 SQL 之前的值,以便在客户端代码中生成它。
  • 为什么要使用唯一约束?这可能会导致哈希冲突问题?
  • @Martin :确实,它不必是唯一的。只需一个索引即可。
  • 您对哈希生成有什么建议?我不介意它不是独一无二的。我宁愿它小一点。它必须很快。我们说的是每秒 10k 条记录。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-02
  • 1970-01-01
相关资源
最近更新 更多