English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
「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);
表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 ジェームズ 24 ヒューストン 10000.0 2 アレン 25 テキサス 15000.0 1 ポール 32 カリフォルニア 20000.0 3 テディ 23 ノルウェー 20000.0 6 キム 22 サウス-ホール 45000.0 4 マーク 25 リッチ-モンド 65000.0 5 デイビッド 27 テキサス 85000.0