English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
インデックスは特別な検索テーブルであり、データベースの検索エンジンがインデックスを使用してデータの検索を加速できます。簡単に言えば、anインデックスインデックスはテーブルのデータを指すポインタです。データベースのインデックスは、本の末尾のインデックスと非常に似ています。
例えば、あるトピックに関するすべてのページを参照する必要がある場合、まず索引を参照し、すべてのトピックをアルファベット順にリストした索引を参照し、特定のページ番号を引用します。
インデックスはSELECTクエリやWHERE子句の速度を向上させますが、UPDATEやINSERT文でデータの入力速度を遅らせます。インデックスを追加または削除することでデータに影響を与えることはありません。
インデックスの作成はCREATE INDEX文で行われ、インデックスに名前を付け、テーブルとインデックスする列を指定し、インデックスが昇順か降順かを指示します。
インデックスはユニークなものでもあり、UNIQUE制約に似ています。なぜなら、インデックスは重複のエントリを防ぐために、インデックスの列や列の組み合わせに存在します。
以下は基本的な構文ですCREATE INDEX。
CREATE INDEX index_name ON table_name;
単列インデックスは、テーブルの単一の列に基づいて作成されるインデックスです。基本的な構文は以下の通りです-
CREATE INDEX index_name ON table_name (column_name);
唯一インデックスは、パフォーマンスの向上だけでなく、データの整合性にも使用されます。唯一インデックスは、テーブルに重複の値を挿入することを許可しません。基本的な構文は以下の通りです-
CREATE UNIQUE INDEX index_name ON table_name (column_name);
複合インデックスは、テーブルの二つ以上の列上に作成されるインデックスです。基本的な構文は以下の通りです-
CREATE INDEX index_name ON table_name (column1, column2);
単列インデックスまたは複合インデックスを作成する場合でも、WHERE子句で非常に頻繁に使用される可能性のあるcolumn(s)を考慮してください。
一つの列のみを使用する場合、単列インデックスを選択する必要があります。WHERE子句で二つ以上の列が頻繁にフィルタとして使用される場合、複合インデックスが最適です。
暗黙的なインデックスは、オブジェクトを作成する際にデータベースサーバーが自動的に作成するインデックスです。自動的に主キー制約とユニーク制約にインデックスを作成します。
例
以下は例です。COMPANYテーブルの給料列にインデックスを作成します。-
sqlite> CREATE INDEX salary_index ON COMPANY (salary);
今、以下を使用して.indicesコマンドはCOMPANYテーブルにすべての利用可能なインデックスをリストします:
sqlite> .indices COMPANY
以下のような結果が得られます、その中でsqlite_autoindex_COMPANY_1これは暗黙的なインデックスです、この形式のインデックスは、テーブル自体を作成する際に作成されます。
salary_indexsqlite_autoindex_COMPANY_1
以下のように、すべてのインデックスデータベース範囲をリストすることができます:
sqlite> SELECT * FROM sqlite_master WHERE type = 'index';
SQLiteを使用することができます DROPインデックスの削除コマンドを実行します。インデックスの削除は慎重に行いましょう、パフォーマンスが低下したり向上したりする可能性があります。
以下は基本的な语法です。-
DROP INDEX index_name;
以下の文を使用して以前に作成したインデックスを削除できます。
sqlite> DROP INDEX salary_index;
インデックスはデータベースのパフォーマンスを向上させるために設計されていますが、時にはそれらの使用を避けるべきです。以下のガイドラインは、インデックスの使用を再考すべき時を指示します。
インデックスは以下に使用されません-
小さなテーブル。
頻繁に大量のバッチ更新や挿入操作が行われるテーブル。
多くの NULL 値を含む列。
よく操作される列。