SQLLearn
← レッスン一覧/中級

インデックスとパフォーマンス

インデックスとは?

インデックスは本の索引のようなもので、データの検索を高速化します。

インデックスの作成

-- 単一カラムのインデックス
CREATE INDEX idx_employees_salary ON employees(salary);

-- 複合インデックス
CREATE INDEX idx_employees_dept_salary ON employees(department_id, salary);

インデックスが効果的な場合

  • WHERE句で頻繁に使うカラム
  • JOIN条件に使うカラム(外部キー)
  • ORDER BY で頻繁に使うカラム

EXPLAIN でクエリを分析

SQLiteでは EXPLAIN QUERY PLAN でクエリの実行計画を確認できます。

EXPLAIN QUERY PLAN
SELECT * FROM employees WHERE salary > 500000;

パフォーマンスのベストプラクティス

  • SELECT * より必要なカラムだけを指定する
  • N+1問題を避けてJOINを使う
  • 大量データには LIMIT を使う
  • インデックスのあるカラムで絞り込む

インデックスの確認・削除

-- インデックス一覧
SELECT * FROM sqlite_master WHERE type = 'index';

-- インデックス削除
DROP INDEX idx_employees_salary;
サブクエリ

SQL エディタ

練習問題

問題 1

employeesテーブルのsalaryカラムにインデックス idx_emp_salary を作成し、SQLite_masterで確認してください