Insert 插入新行时postgresql索引是否更新?

Insert 插入新行时postgresql索引是否更新?,insert,indexing,postgresql-9.2,Insert,Indexing,Postgresql 9.2,很抱歉,如果这是一个愚蠢的问题,那么我是否需要在每次插入行时重新为表编制索引,或者在添加新行时是否为其编制索引? 我认为当您插入行时,索引确实会得到更新。它在插入数据时维护索引表上的排序。因此,如果您尝试一次添加大量行,则表会出现性能问题或停机时间。From 创建索引后,无需进一步干预:修改表时,系统将更新索引 除其他答案外:PostgreSQL是一个顶级的关系数据库。我不知道有哪个关系数据库系统的索引不是自动更新的。这似乎取决于索引的类型。例如,根据,对于BRIN索引: 当创建的新页面不属于上

很抱歉,如果这是一个愚蠢的问题,那么我是否需要在每次插入行时重新为表编制索引,或者在添加新行时是否为其编制索引?

我认为当您插入行时,索引确实会得到更新。它在插入数据时维护索引表上的排序。因此,如果您尝试一次添加大量行,则表会出现性能问题或停机时间。

From

创建索引后,无需进一步干预:修改表时,系统将更新索引


除其他答案外:PostgreSQL是一个顶级的关系数据库。我不知道有哪个关系数据库系统的索引不是自动更新的。

这似乎取决于索引的类型。例如,根据,对于BRIN索引:

当创建的新页面不属于上一个摘要范围时,该范围不会自动获取摘要元组;这些元组保持未汇总状态,直到稍后调用汇总运行并创建初始汇总。此过程可以使用brin_SUMMARY_new_values(regclass)函数手动调用,也可以在真空处理表格时自动调用


尽管这在版本10中似乎有所改变。

因此,如果使用一个历史记录列,该列将根据用户的操作进行大量更新,那么表将更新索引(即使索引不在更新列上)当然,更好的做法是将update列单独放在一个具有用户id关系的表中,这样用户表的主要焦点就放在不经常更新的数据上,然后就有一个更完整的userupdate表。