こんにちは、さるまりんです。
タイトルの通り、PostgreSQLのテーブルにインデックスを作成する方法です。
基本的にはCRATE INDEX
を使います。
CREATE INDEX インデックス名 ON テーブル名 (カラム名);
単一カラムに対して
一つのカラムに対してのインデックスであれば上の構文のままいけます。
例えばmembers
テーブルのprefecture
カラムにインデックスを作成するには
CREATE INDEX idx_members_prefecture ON members (prefecture);
です。
複数のカラムに対して
複数のカラムに対してインデックスを作成します。
同じテーブルのfirst_name
、last_name
に合わせてインデックスを作成するには
CREATE INDEX idx_members_name ON members (first_name, last_name);
です。
一意なインデックス
インデックスが一意(ユニーク)であること(重複がないこと)を保証する場合はUNIQUE
キーワードを使って↓のようにします。
CREATE UNIQUE INDEX idx_members_email_unique ON members (email);
これでemail
は一意となることが保証されるので、同じメールアドレスを持つ会員はmembers
テーブルに存在することができません。
部分インデックス
特定の条件を満たす行に対してのみインデックスを作成することもできます。
例えば、status='active'
のmembers
を有効な会員とし、それのみを対象としてemail
カラムにインデックスを作成するには
CREATE INDEX idx_members_active_email ON members (email) WHERE status = 'active';
です。
無効な会員はメールアドレスで検索することが少なければこのような部分的なインデックスが役に立ちます。
基本的なこと、ちょっと応用的なこと、どちらもメモしてみました。
データベース作成やテーブル作成は最初にやったらそれ以降あまり高い頻度でやらないのでいつも忘れてしまいます。ここへ戻ってきたらできるように残しておきます。
読んでくださってありがとうございました。
それではまた!