IT用語集 › データベース › スキップスキャン

スキップスキャン

データベース Svenska → 更新: 2026-10-22

クエリに複合インデックスの先頭列の条件がなくても、先頭列の異なる値を「飛ばし」ながらそのインデックスを使えるようにする最適化。Oracle、MySQL 8以降、Postgres 18が対応する。

問題はこうだ。(status, created_at) のインデックスは、created_at だけで絞り込むクエリには通常役に立たない。インデックスは status の順に並んでいるからである。status の値の種類が少なければ、スキップスキャンで解決できる。DB は status の値(「pending」「done」など)ごとに小さな検索を行い、結果を統合する。利点は、別のインデックスを作る手間も、全表スキャンも避けられることだ。代償として、先頭列のカーディナリティが低い(値の種類が少ない)場合にしか効果がない。Postgres には、バージョン18(2025年)で「ルーズインデックススキャン」に近いスキップスキャンが入った。MySQL では8.0で「Skip Scan Range Access Method」と呼ばれた。

← 用語集に戻る