データベーススペシャリストの勉強中ですが何度も忘れてしまう内容を思い出すための備忘録。
共通テーブル式
共通テーブル式 (CTE: Common Table Expression)。一時的に利用できる「名前付きの結果セット」を定義する仕組み。
WITH 名前 AS (
SELECT ...
)
SELECT *
FROM 名前;Point
✅ WITHとSELECTの間は ; は入らない。
✅ ビューと違ってSQL文を実行する間だけ有効な一時的な結果セット
✅ サブクエリと違って名前を付けて複数参照できる
✅ 複数定義する場合は WITH Q1 AS (), WITH Q2 AS () SELECT ~ というようにカンマで区切る
索引(インデックス)
データの検索や結合を効率化するために、テーブルの列に対して作られるデータ構造。B+木インデックスなど。
-- インデックスの作成例
CREATE INDEX idx_emp_name
ON Employee(name);Point
✅ 自動的に作成されるケース
・主キー(PRIMARY KEY) 制約
・一意キー(UNIQUE) 制約
✅ 自動的に作成されないケース
・外部キー(FOREIGN KEY)制約
・CHECK制約やNOT NULL制約
✅ メリット
・検索速度の向上
✅ デメリット
・INSERT / UPDATE / DELETE の度にインデックスが更新されるため、更新系処理が遅くなる。