我正在对我们项目中最大的表之一进行性能调整。在阅读索引时,我遇到了 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)
仍然是唯一的,但它会从部分索引中删除吗?因为记录不符合条件。