S-JIS[2023-12-13/2024-01-29]
TsurugiのSQLでインデックスを作成するのがcreate index文。
create インデックス名 on テーブル名 (カラム名, …)
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 idx_test_bar on test (bar);