単一カラムインデックスの作成
このステップでは、users という名前のサンプルテーブルを作成し、次に email 列に単一列インデックスを作成します。インデックスは、特に大規模なテーブルを扱う場合に、データベースクエリのパフォーマンスを向上させるために不可欠です。
まず、postgres ユーザーとして PostgreSQL データベースに接続します。
sudo -u postgres psql
次に、users テーブルを作成します。以下の SQL コマンドを実行してください。
CREATE TABLE users (
id SERIAL PRIMARY KEY,
username VARCHAR(50),
email VARCHAR(100),
created_at TIMESTAMP
);
このコマンドは、id、username、email、created_at の列を持つ users という名前のテーブルを作成します。id 列は主キーであり、自動的にインクリメントされます。
次に、users テーブルにサンプルデータを挿入します。以下の SQL コマンドを実行してください。
INSERT INTO users (username, email, created_at) VALUES
('john_doe', 'john.doe@example.com', NOW()),
('jane_smith', 'jane.smith@example.com', NOW()),
('peter_jones', 'peter.jones@example.com', NOW()),
('mary_brown', 'mary.brown@example.com', NOW()),
('alice_wilson', 'alice.wilson@example.com', NOW()),
('bob_davis', 'bob.davis@example.com', NOW()),
('carol_garcia', 'carol.garcia@example.com', NOW()),
('david_martinez', 'david.martinez@example.com', NOW()),
('emma_anderson', 'emma.anderson@example.com', NOW()),
('frank_taylor', 'frank.taylor@example.com', NOW());
-- インデックスの使用に十分な大きさにするために、追加の行を挿入します
INSERT INTO users (username, email, created_at)
SELECT
'user_' || generate_series(1, 1000),
'user' || generate_series(1, 1000) || '@example.com',
NOW();
これで、users テーブルに 1000 行以上のデータが挿入されました。PostgreSQL は通常、テーブル全体をスキャンするよりもパフォーマンス上の利点がある場合にインデックスを使用するため、このより大きなデータセットはインデックスの使用をより効果的に示すのに役立ちます。
email 列に基づくクエリを高速化するために、email 列にインデックスを作成します。以下の SQL コマンドを実行してください。
CREATE INDEX idx_users_email ON users (email);
このコマンドは、users テーブルの email 列に idx_users_email という名前のインデックスを作成します。
インデックスが作成されたことを確認するには、psql で \di コマンドを使用できます。以下のコマンドを実行してください。
\di
出力に idx_users_email インデックスが表示されるはずです。
最後に、psql シェルを終了するには、次のように入力します。
\q