S-JIS[2023-12-13/2024-01-29]

Tsurugi create index

TsurugiSQLのcreate indexのメモ。


概要

TsurugiのSQLでインデックスを作成するのがcreate index文。

create インデックス名 on テーブル名 (カラム名, …)

DDLを実行する際のトランザクション種別


Tsurugi 1.0.0-BETA2以前では、create indexした後にinsertしたデータしかインデックスを利用した検索が出来ない。
データをinsertした後にcreate indexし、インデックスで指定したカラムをwhere条件に入れたselectを実行すると(インデックスが使われると)、select結果は0件になる。

Tsurugi 1.0.0-BETA3では、データが入っているテーブルに対してcreate indexするとエラーになる。[2024-01-29]

UNSUPPORTED_RUNTIME_FEATURE_EXCEPTION (SQL-02050: Records exist in the table "test" and creating index is not supported for tables with existing records)

Tsurugiの用語では、create indexで作られるインデックスのことを「セカンダリーインデックス」と呼ぶ。
Tsurugiの書籍のp.374『13.3.8 セカンダリインデックス』参照。

Tsurugiサーバーの内部では、テーブルのデータはKVS(Key Value Store)で格納されている。(実際はMasstreeという構造らしい)

他のRDBMSではプライマリキー項目に対して(暗黙に)インデックスを作成するかもしれないが、
Tsurugi内部はKVSでありキーの昇順でデータが格納されるので、プライマリキーに対してインデックスという特別な何かは作成されない。


create indexの例

create index idx_test_bar on test (bar);

Tsurugi SQLへ戻る / Tsurugiへ戻る / 技術メモへ戻る
メールの送信先:ひしだま