我有一个 CHAR(250) 列用作 varchar(24) 列的外键。
在 MySQL 中,我记得我可以创建一个指定 column(24) 的索引,以便在最左边的 24 个字符上创建一个索引。这在 MS SQL Server 上似乎是不可能的。
我的问题是这样的:
是否可以在 SQL Server 2008 上使用索引视图来索引该列的子字符串,如果可以,它会对表的性能产生任何副作用吗?
我有一个 CHAR(250) 列用作 varchar(24) 列的外键。
在 MySQL 中,我记得我可以创建一个指定 column(24) 的索引,以便在最左边的 24 个字符上创建一个索引。这在 MS SQL Server 上似乎是不可能的。
我的问题是这样的:
是否可以在 SQL Server 2008 上使用索引视图来索引该列的子字符串,如果可以,它会对表的性能产生任何副作用吗?
您可以创建一个持久的计算列,然后对其进行索引,请参阅在计算列上创建索引
alter table add newcolumn as cast(oldcolumn as varchar(24)) persisted;
create index table_newcolumn on table (newcolumn);
我希望你有一个很好的关系理由这样做。我猜测供应商提供的表的前 24 个字符实际上构成了一个离散属性,并且应该首先放在单独的列中。
所以...
创建供应商表的视图。如果您愿意,请对其进行索引。我怀疑你可以在视图上指向一个 FK 约束,但你当然可以写一个触发器来达到同样的效果。针对索引视图的触发器检查将非常快,但代价是视图基表的更新时间略有增加。
HTH。