SQLite のインデックス付け
「INDEXED BY インデックス名」句は、前のテーブルの値を検索するために名前付きインデックスが必要であることを指定します。
インデックス名index-nameが存在しないか、クエリに使用できない場合、SQLiteステートメントの準備は失敗します。
「NOT INDEXED」句は、前のテーブル (UNIQUE 制約と PRIMARY KEY 制約によって作成された暗黙的なインデックスを含む) にアクセスするときにインデックスが使用されないことを指定します。
ただし、「NOT INDEXED」が指定されている場合でも、INTEGER PRIMARY KEY を使用してエントリを検索できます。
構文
以下は、DELETE、UPDATE、または SELECT ステートメントで使用できる INDEXED BY 句の構文です:
SELECT|DELETE|UPDATE column1, column2...
INDEXED BY (index_name)
table_name
WHERE (CONDITION);
INDEXED BY (index_name)
table_name
WHERE (CONDITION);
例
テーブル COMPANY があると仮定し、インデックスを作成し、それを使用して INDEXED BY 操作を実行します。
sqlite> CREATE INDEX給与_index ON COMPANY(salary);
sqlite>
sqlite>
次に、以下に示すように INDEXED BY 句を使用してテーブル COMPANY からデータを選択します。