0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SQLパフォーマンス詳解 2章: where句_11.部分インデックス

Posted at

2章: where句

11.部分インデックス

まとめ

部分インデックスとは、
テーブル全体ではなく、特定の条件(WHERE句)を満たす行だけに作成するインデックス。
目的としては、

  • よく使われる 特定条件の検索を高速化
  • 不要な行をインデックスに含めないことでサイズとコストを削減 するため

典型例

未処理データだけを頻繁に検索するケース(キュー処理など)

SELECT message
FROM messages
WHERE processed = 'N'
  AND receiver = ?

部分インデックスの作成例:

CREATE INDEX messages_todo
ON messages (receiver)
WHERE processed = 'N';

効果

  • インデックスには processed = 'N' の行だけが入る
  • インデックス上では processed が常に 'N' のため
    インデックス列から除外できる

結果

  • 行数が減る(縦方向)
  • 列数が減る(横方向)
  • インデックスが非常に小さく高速

特徴・利点

  • テーブルが巨大になっても、
    未処理データが少なければインデックスサイズはほぼ増えない
  • 定数条件を含むWHERE句に特に有効

制限事項

  • 使用できる関数は 確定的関数のみ
  • DB製品によって制約が異なる
    SQL Server: 関数や OR 条件が使えない

結論

よく使う条件の列だけを対象にした、小さくて速いインデックス

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?