1

プロジェクトで最大のテーブルの 1 つでパフォーマンス チューニングを行っています。インデックスについて読んでいるときに、PostgreSQL の部分インデックスに出会いました。これは、頻繁にアクセスされる行にのみインデックスを配置するという非常に良いアイデアに思えます。

ただし、部分インデックスがどのように更新されるかを理解することはできません。たとえば、次の列を持つテーブルがあります。

task_uuid, job_id, enqueued_at, updated_at, task_status

task_status= ENQUEUED, RUNNING, ASSIGNED, FAILED

ENQUEUED非常に頻繁に状態にあるレコードを検索します。部分インデックスを追加する(task_uuid, task_status)と、一意のキーが構築され、パフォーマンスが向上します。しかし、私が知りたいのは、レコードが更新されたとき、レコードのRUNNINGステータスを更新したときに何が起こるかということです。(task_uuid, task_status)はまだ一意ですが、部分インデックスから削除されますか? レコードが条件を満たしていないためです。

4

1 に答える 1