Hsqldb-indexes
HSQLDB-インデックス
- データベースインデックス*は、テーブル内の操作の速度を向上させるデータ構造です。 インデックスは1つ以上の列を使用して作成でき、迅速なランダム検索とレコードへのアクセスの効率的な順序付けの両方の基礎を提供します。
インデックスの作成中に、SQLクエリを作成するために使用される列を検討し、それらの列に1つ以上のインデックスを作成する必要があります。
実際には、インデックスもテーブルの一種であり、主キーまたはインデックスフィールドと各レコードへのポインタを実際のテーブルに保持します。
ユーザーはインデックスを見ることができません。 これらはクエリを高速化するために使用され、データベース検索エンジンがレコードをすばやく見つけるために使用されます。
INSERTステートメントとUPDATEステートメントは、インデックスを持つテーブルではより時間がかかりますが、SELECTステートメントはこれらのテーブルでより速く実行されます。 理由は、挿入または更新中に、データベースもインデックス値を挿入または更新する必要があるためです。
シンプルでユニークなインデックス
テーブルに一意のインデックスを作成できます。 *一意のインデックス*は、2つの行が同じインデックス値を持つことはできないことを意味します。 以下は、テーブルにインデックスを作成する構文です。
CREATE UNIQUE INDEX index_name
ON table_name (column1, column2,...);
1つ以上の列を使用して、インデックスを作成できます。 たとえば、tutorial_authorを使用して、tutorials_tblにインデックスを作成します。
CREATE UNIQUE INDEX AUTHOR_INDEX
ON tutorials_tbl (tutorial_author)
テーブルに単純なインデックスを作成できます。 単純なインデックスを作成するには、クエリからUNIQUEキーワードを省略します。 *単純なインデックス*は、テーブル内の重複値を許可します。
列の値を降順でインデックス付けする場合は、列名の後に予約語DESCを追加できます。
CREATE UNIQUE INDEX AUTHOR_INDEX
ON tutorials_tbl (tutorial_author DESC)
インデックスを追加および削除するALTERコマンド
テーブルにインデックスを追加するためのステートメントの4種類があります-
- * ALTER TABLE tbl_name ADD PRIMARY KEY(column_list)*-このステートメントはPRIMARY KEYを追加します。これは、インデックス付けされた値が一意であり、NULLであってはならないことを意味します。
- * ALTER TABLE tbl_name ADD UNIQUE index_name(column_list)*-このステートメントは、値が一意である必要があるインデックスを作成します(NULL値を除き、複数回表示される場合があります)。
- * ALTER TABLE tbl_name ADD INDEX index_name(column_list)*-これは、任意の値が複数回現れる可能性がある通常のインデックスを追加します。
- * ALTER TABLE tbl_name ADD FULLTEXT index_name(column_list)*-これは、テキスト検索に使用される特別なFULLTEXTインデックスを作成します。
以下は、既存のテーブルにインデックスを追加するクエリです。
ALTER TABLE testalter_tbl ADD INDEX (c);
ALTERコマンドとともにDROP句を使用して、任意のINDEXを削除できます。 以下は、上記で作成したインデックスを削除するクエリです。
ALTER TABLE testalter_tbl DROP INDEX (c);
INDEX情報の表示
SHOW INDEXコマンドを使用して、テーブルに関連付けられているすべてのインデックスをリストできます。 縦書き形式の出力(\ Gで指定)は、長い行の折り返しを避けるために、このステートメントでしばしば役立ちます。
以下は、テーブルに関するインデックス情報を表示するための一般的な構文です。
SHOW INDEX FROM table_name\G