面试题答案
一键面试- 插入操作:
- 当执行插入操作时,PostgreSQL会在相应的索引中插入新的索引项。如果索引是B - Tree类型,新的索引项会按照键值顺序插入到合适的位置,可能会导致节点分裂,以维护B - Tree的结构特性。对于GiST、GIN等其他类型索引,也会根据其特定的结构和算法插入新的索引数据,以确保索引能正确反映表中数据的变化。
- 更新操作:
- 对于更新操作,如果更新的列包含在索引中,PostgreSQL通常会先删除旧的索引项,然后插入新的索引项。例如在B - Tree索引中,先找到并删除对应旧值的索引项,再将对应新值的索引项插入到合适位置,这一过程可能同样涉及节点的分裂或合并操作。如果更新操作涉及到多列索引的部分列更新,也需要按照索引结构规则调整索引。
- 删除操作:
- 在执行删除操作时,如果被删除行的相关列有索引,PostgreSQL会从索引中删除对应的索引项。在B - Tree索引中,删除操作可能会导致节点合并,以优化B - Tree结构,减少空间浪费。对于其他类型索引,同样会依据其自身结构删除相关索引数据,使索引与表中的实际数据保持一致。