3

我有一个 CHAR(250) 列用作 varchar(24) 列的外键。

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

我的问题是这样的:

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

4

2 回答 2

7

您可以创建一个持久的计算列,然后对其进行索引,请参阅在计算列上创建索引

alter table add newcolumn as cast(oldcolumn as varchar(24)) persisted;
create index table_newcolumn on table (newcolumn);
于 2010-10-26T23:39:07.597 回答
2

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

所以...

创建供应商表的视图。如果您愿意,请对其进行索引。我怀疑你可以在视图上指向一个 FK 约束,但你当然可以写一个触发器来达到同样的效果。针对索引视图的触发器检查将非常快,但代价是视图基表的更新时间略有增加。

HTH。

于 2010-10-28T04:24:23.673 回答