IT用語集 › データベース › ルーズインデックススキャン

ルーズインデックススキャン

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

DISTINCTとGROUP BYの最適化。すべてのインデックスエントリを読んで重複を除くのではなく、インデックス上で次の異なる値へ直接ジャンプする。グループあたりの重複が多いと、読み取りが劇的に減る。

例:customer_idにインデックスがある場合のSELECT DISTINCT customer_id FROM ordersは、数百万行を走査する代わりに、新しいcustomer_id(せいぜい数千)ごとにジャンプする。SELECT customer_id, MAX(created_at) GROUP BY customer_idにも有効だ。MySQLには古くからある(「Using index for group-by」)。PostgreSQLには長年なく、再帰CTEでスキップを模倣するのが定番の小技だったが、バージョン18で本物のスキップスキャンが加わった。列のカーディナリティがテーブルサイズに比べて低いほど効果は大きい。スキップスキャンと密接に関連する。

← 用語集に戻る