代码之家  ›  专栏  ›  技术社区  ›  Kevin Stricker

在部分字符列上创建索引

  •  3
  • Kevin Stricker  · 技术社区  · 14 年前

    在MySQL中,我记得我可以创建一个指定列(24)的索引,以便在最左边的24个字符上创建一个索引。这在MS SQL Server上似乎是不可能的。

    我的问题是:

    是否可以使用SQL Server 2008上的索引视图为该列的子字符串编制索引?如果可以,是否会对表的性能产生任何副作用?

    2 回复  |  直到 14 年前
        1
  •  7
  •   Remus Rusanu    14 年前

    可以创建持久化计算列,然后对其进行索引,请参见 Creating Indexes on Computed Columns

    alter table add newcolumn as cast(oldcolumn as varchar(24)) persisted;
    create index table_newcolumn on table (newcolumn);
    
        2
  •  2
  •   James K. Lowden    14 年前

    我希望你有一个好的 关系型 这么做的原因。我猜供应商提供的表的前24个字符实际上构成了一个离散属性,应该首先放在一个单独的列中。

    所以。。。

    创建供应商表的视图。如果你愿意的话,给它编索引。我怀疑您是否可以将FK约束指向视图,但您肯定可以编写一个触发器来达到相同的效果。针对索引视图的触发器检查将非常快速,但会导致视图基表的更新时间略有增加。

    推荐文章