代码之家  ›  专栏  ›  技术社区  ›  Pure.Krome

是否为Sql 2008表字段添加对某些部分数据的索引/全文搜索?

  •  1
  • Pure.Krome  · 技术社区  · 15 年前

    我有一个包含guid的字段。它们表示用户的PunkBuster guid。

    是否可以在此字段上创建索引 最后的 guid的8个字符?

    我问你的原因是你不能像这样进行全文搜索; '*abcdef' . (至少我相信我在某个地方读到过。。。是不是Sql 08中的专业全文搜索?)

    可能的解决方案(我不太喜欢这样):-

    • NVARCHAR(8) . 它包含guid的最后8个字符。在此字段上添加索引。
    • 新表已存档-> UNIQUE IDENTIFIER . 反转guid,然后将其保存在此字段中。然后我可以对guid执行FTS操作,但可以反转请求的查询,然后搜索它->'fedcba*'

    现在两种方法都能奏效。但我不想在表中添加额外的数据。。特别是如果是相同的数据,只是“看”得不同。

    因此,假设我们不想这样做,为了讨论的目的,我们可以在字段中的某些部分数据上创建索引吗?

    2 回复  |  直到 15 年前
        1
  •  0
  •   jwanagel    15 年前

    我唯一能想到的是用你提到的8字符字段或反向guid字段创建一个索引视图。然后在索引视图上创建全文索引。

        2
  •  0
  •   marc_s Hady Salah    15 年前

    您可以创建一个新的计算列,并使其持久化,然后对其进行索引。

    ALTER TABLE dbo.YourTable
      ADD LastEightGUID AS RIGHT(CAST(PunkBusterID AS VARCHAR(50)), 8) PERSISTED
    

    然后在新字段上创建索引

    CREATE NONCLUSTERED INDEX IX_LastEight 
       ON dbo.YourTable(LastEightGUID)
    

    马克