次のようなテーブルがあるとします。
create table #data
(
ID int identity(1, 1),
Value float,
VCluster as (ID % 5),
VType as (cast(case when Value > 1 then 1 when Value < -1 then -1 else 0 end as int))
)
次のように、計算列に 2 つのインデックスを作成する必要があります。
create index #ix_data_1 on #data (VCluster)
create index #ix_data_2 on #data (VType)
最初のものはうまく作成されますが、2 番目のものを作成しようとすると、次のエラー メッセージが表示されます。 ...」
システム ビューを次のようにクエリしました。
select c.name, c.system_type_id, t.name as type_name
from tempdb.sys.columns c
join tempdb.sys.types t on t.system_type_id = c.system_type_id
where c.object_id = object_id('tempdb..#data')
order by c.column_id
そして、次の結果を得ました:
name system_type_id type_name
---------- -------------- ----------
ID 56 int
Value 62 float
VCluster 56 int
VType 56 int
というわけで、カラムの型VType
はintなのですが、なんとなく「あまりintじゃない」みたいです。列を作成してインデックスを作成できることはわかっていますpersisted
が、それを回避して列をVType
「100% int」にする方法はありますか?