Sqlite-indexed-by
提供:Dev Guides
SQLite-INDEXED BY句
「INDEXED BY index-name」句は、名前付きインデックスを使用して、前のテーブルの値を検索する必要があることを指定します。
index-nameが存在しないか、クエリに使用できない場合、SQLiteステートメントの準備は失敗します。
「NOT INDEXED」句は、UNIQUEおよびPRIMARY KEY制約によって作成された暗黙のインデックスを含め、前のテーブルにアクセスするときにインデックスを使用しないことを指定します。
ただし、「NOT INDEXED」が指定されている場合でも、INTEGER PRIMARY KEYを使用してエントリを検索できます。
構文
INDEXED BY句の構文は次のとおりで、DELETE、UPDATE、またはSELECTステートメントで使用できます。
SELECT|DELETE|UPDATE column1, column2...
INDEXED BY (index_name)
table_name
WHERE (CONDITION);
例
テーブルlink:/sqlite/company.sql [COMPANY]を検討してください。インデックスを作成し、それをINDEXED BY操作の実行に使用します。
sqlite> CREATE INDEX salary_index ON COMPANY(salary);
sqlite>
ここで、テーブルCOMPANYからデータを選択すると、次のようにINDEXED BY句を使用できます-
sqlite> SELECT * FROM COMPANY INDEXED BY salary_index WHERE salary > 5000;
これにより、次の結果が生成されます。
ID NAME AGE ADDRESS SALARY
---------- ---------- ---------- ---------- ----------
7 James 24 Houston 10000.0
2 Allen 25 Texas 15000.0
1 Paul 32 California 20000.0
3 Teddy 23 Norway 20000.0
6 Kim 22 South-Hall 45000.0
4 Mark 25 Rich-Mond 65000.0
5 David 27 Texas 85000.0