式インデックス
表示
式インデックス(しきインデックス、英: expression index)または関数インデックス(英: function-based index)は関係データベース管理システムで用いられるインデックスの中で、列の組み合わせの代わりに任意の式の結果をキーとするものを指す。 式インデックスを使うと、テーブルに格納された実際のデータとは異なるキーでの検索が可能になる。
式インデックスの一般的な使用例として、大文字小文字を区別しない検索または一意性制約がある。 例えば、ユーザ名を大文字小文字を区別せずに検索を行い、かつ入力されたユーザ名の大文字小文字を保持したい場合が挙げられる。この場合、小文字に変換して格納するだけは要件を満たせない。一意性制約のための UNIQUE INDEX は、大文字もしくは小文字に変換後のユーザ名 (user_name) に対して定義できる:
CREATE UNIQUE INDEX idx_user_name_lower ON user_table( lower( user_name ) );
検索クエリは WHERE句に lower(user_name)
を指定することで、
このインデックスを使うことができる:
SELECT user_id FROM user_table WHERE lower(user_name) = lower('Decibel');
サポート
[編集]- PostgreSQL は式インデックスをサポートしている[1]。
- Microsoft SQL Server は式インデックスを直接はサポートしないが、計算列に対するインデックスの作成で代用できる[2]。
脚注
[編集]- ^ “式に対するインデックス”. PostgreSQL 8.4.0文書. PostgreSQL. 2009年8月29日閲覧。
- ^ “計算列に対するインデックスの作成”. SQL Server オンライン ブック. Microsoft. 2009年8月29日閲覧。