MW211 EXIT

devlog
MSSQL/計算列の応用
2015年02月28日
MSSQLでは「計算列」という自動で計算してくれる列がある。
たいていは、「単価×数量」の結果を格納する列にそれを設定するのだが、
キーのグルーピングにも応用できそうだ。

以下のような感じ。(主キーの先頭4文字を別キーとする)
┌──────────────────────────────────────┐
│CREATE TABLE [dbo].[表] (                                                   │
│    [キー]                  [int]               NOT NULL,                   │
│    [部分キー]              AS SUBSTRING([キー], 0, 4),                     │
│    CONSTRAINT [主キー] PRIMARY KEY CLUSTERED (                             │
│        [キー]                  ASC                                         │
│    )                                                                       │
│);                                                                          │
├──────────────────────────────────────┤
│CREATE INDEX [索引] ON [dbo].[表] (                                         │
│    [部分キー]                                                              │
│);                                                                          │
└──────────────────────────────────────┘

インデックスも張れるので、都度文字列編集しながらの検索とかが
インデックスを効かせて快適(快速)に行うことができる。
┌──────────────────────────────────────┐
│SELECT *                                                                    │
│    FROM [表]                                                               │
│    WHERE SUBSTRING([キー], 0, 4) = 'XXXX';                                 │
├──────────────────────────────────────┤
│SELECT *                                                                    │
│    FROM [表]                                                               │
│    WHERE [部分キー] = 'XXXX';                                              │
└──────────────────────────────────────┘
これは便利。

なお、「計算列」には直接INSERTできない(エラー)から注意(というか当たり前か)。