SQLiteのインデックス
インデックス(指数)は、特別なルックアップテーブル、データ検索を高速化するために使用されるデータベースの検索エンジンです。 簡単に言えば、インデックスは、テーブル内のデータへのポインタです。 インデックスの背後にある書籍のデータベースインデックスは、非常に類似しています。
あなたはすべてのページが参照される本の中で特定のトピックを議論したい場合たとえば、あなたは最初のインデックス、すべてのトピックをアルファベット順にポイントする必要があり、その後、一つ以上の特定のページ番号を指します。
インデックスは、迅速なSELECTクエリとWHERE句を許可するが、それはときに、UPDATEとINSERT文を使用してデータ入力が遅くなります。 インデックスが作成または削除しますが、データには影響しませんすることができます。
あなたがインデックスに名前を付けることができます、CREATE INDEXステートメントを使用してインデックスを作成し、インデックスを作成するテーブルと、1つ以上の列を指定して、インデックスが昇順または降順であることを示します。
インデックスは、列または列の組み合わせで重複したエントリを防ぐために、ユニークな、と同様のUNIQUE制約することができます。
CREATE INDEXコマンド
基本的な構文CREATE INDEXを次のとおりです。
table_nameでインデックスindex_nameのを作成します。
別冊索引
インデックスが作成されたリスト上の唯一の単一のインデックスに基づいています。 次のように基本的な構文は次のとおりです。
INDEX index_nameはのCREATE table_nameのON(column_nameに);
固有索引
一意のインデックスを使用すると、パフォーマンスのためだけでなく、データの整合性にだけではありません。 ユニーク・インデックスは、テーブルに重複値を許可しません。 次のように基本的な構文は次のとおりです。
CREATE UNIQUE INDEX index_name on table_name (column_name);
コンポジットインデックス
組成インデックスが作成された表の2以上の列に基づいています。 次のように基本的な構文は次のとおりです。
INDEX index_nameはのCREATE table_nameの上(column1の、column2の);
あなたは別のインデックスを作成しますか考慮にWHERE句の列のクエリのフィルタ条件として非常に頻繁に取って、複合インデックスです。
カラムの使用の価値場合は、別のインデックスを使用することを選択しました。 WHERE句内のフィルタがある場合、多くの場合、インデックスの組み合わせを使用することを選択し、2以上の列を使用します。
暗黙的なインデックス
暗黙的なインデックスは、オブジェクトを作成するときに、データベース・サーバによって自動的に作成されたということです。 インデックスは自動的に主キー制約および一意性制約として作成されます。
例
ここでは一例であり、我々は、給与列COMPANYテーブルにインデックスを作成します。
SQLiteは> COMPANY(給与)のインデックスsalary_indexを作成します。
さて、次のようにのは、COMPANYテーブルに.indicesコマンドリストのすべての使用可能な索引を使用してみましょう:
sqliteの> .indices会社
これは、テーブルを作成するときに、暗黙的なインデックスが作成されsqlite_autoindex_COMPANY_1次の結果を生成します。
salary_index sqlite_autoindex_COMPANY_1
次のように、すべてのインデックスデータベースの範囲を一覧表示することができます。
sqliteの> SELECT * FROM sqlite_masterタイプ= 'インデックス';
DROP INDEXコマンド
インデックスは削除するSQLiteのDROPコマンドを使用することができます。 インデックスを削除する際のパフォーマンスが低下または増加させることができるので、特別な注意は、あるべきです。
次のように基本的な構文は次のとおりです。
DROP INDEX index_nameは、
あなたは以前に作成したインデックスを削除するには、次のステートメントを使用することができます。
sqliteの>のDROP INDEX salary_index。
どのような状況下では、インデックスの使用を回避するには?
が、インデックスは、データベースのパフォーマンスを向上させることであるが、ここではいくつかの例は、インデックスの使用を回避する必要があります。 あなたは、インデックスを使用する場合は、次のガイドラインを再検討する必要があります。
インデックスは、小さなテーブルでは使用しないでください。
インデックスは、頻繁な更新やテーブルの挿入操作があります大量に使用すべきではありません。
列に使用すべきではないインデックスはNULL値が多数含まれています。
インデックスは、列の頻繁な操作に使用することはできません。