English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SQLite 子句インデックス

「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