×
スキーマオブジェクト
1万件の社員データから「氏名で検索する」場合、索引がなければ1万行すべて調べる必要があります。氏名列に索引を作成しておくと、氏名の索引から目的の行を一瞬で特定できます。
-- 索引の作成例(通常の Bツリー索引)
CREATE INDEX idx_emp_name ON employees(last_name);

-- 複合索引(複数列を組み合わせた索引)
CREATE INDEX idx_emp_dept_sal ON employees(dept_id, salary);

-- 索引の一覧を確認する
SELECT index_name, table_name, uniqueness FROM user_indexes;
索引は条件や実行計画が適合すればWHERE句の絞り込みやORDER BYの処理を効率化できますが、INSERT/UPDATE/DELETE のたびに索引も更新されるためオーバーヘッドが発生します。

もう少し詳しく