Contents
インデックス
データベース検索エンジンがデータ検索のスピードアップに使用できる特別なルックアップ・テーブルです。簡単に言えば、インデックスはテーブル内のデータへのポインタです。
たとえば、特定のトピックについて説明するブック内のすべてのページを参照する場合は、最初にすべてのトピックをアルファベット順にリストしたインデックスを参照し、次に1つまたは複数の特定のページ番号を参照します。
索引はSELECTとWHERE句の処理速度を向上させますが、UPDATE文とINSERT文の場合逆に遅くなります。インデックスには、データに影響を与えずに作成または削除することができます。
インデックスを作成するには、インデックスに名前を付けたり、索引付けする表や列を指定したり、索引が昇順か降順かを示すCREATE INDEXステートメントが必要です。
UNIQUE制約のように、索引は、索引がある列または索引の列の重複した項目を防止するという点で、一意にすることもできます。
CREATE INDEXコマンド
CREATE INDEX index_name ON table_name;
単一列インデックス
単一列の索引は、1つの表の列のみに基づいて作成されます。基本的な構文は次のとおりです。
CREATE INDEX index_name ON table_name (column_name);
ユニークインデックス
ユニークなインデックスは、パフォーマンスだけでなくデータの完全性にも使用されます。一意索引では、重複する値を表に挿入することはできません。基本的な構文は次のとおりです。
CREATE UNIQUE INDEX index_name on table_name (column_name);
複合インデックス
合成索引は、表の2つ以上の列の索引です。基本的な構文は次のとおりです。
CREATE INDEX index_name on table_name (column1, column2);
単一列インデックスまたは複合インデックスを作成するかどうかにかかわらず、クエリのWHERE句で頻繁に使用する列をフィルタ条件として考慮します。
使用する列が1つだけの場合は、単一列の索引を選択する必要があります。フィルタとしてWHERE句で頻繁に使用される2つ以上の列がある場合、複合インデックスが最適な選択肢になります。
暗黙のインデックス
暗黙的な索引は、オブジェクトの作成時にデータベース・サーバーによって自動的に作成される索引です。インデックスは、主キー制約と一意制約に対して自動的に作成されます。
DROP INDEXコマンド
インデックスは、SQL DROPコマンドを使用して削除できます。パフォーマンスが低下または改善する可能性があるため、インデックスを削除するときは注意が必要です。
基本的な構文は次のとおりです。
DROP INDEX index_name;
インデックスを避けるべき場合は?
インデックスはデータベースのパフォーマンスを向上させることを目的としていますが、避けるべき時があります。
次のガイドラインは、インデックスの使用を再考する必要がある場合があります
- 小さな表では索引を使用しないほうがよい。
- 大量のバッチ更新または挿入操作を頻繁に行う表。
- 多数のNULL値を含む列では使用しないほうがよい。
- 頻繁に操作される列は、索引付けしないほうがよい。