很抱歉,如果这是一个愚蠢的问题,但每次插入行时我是否需要重新索引我的表格,或者新行在添加时会被编入索引?
答案 0 :(得分:12)
创建索引后,无需进一步干预:系统将在修改表时更新索引
答案 1 :(得分:3)
http://postgresguide.com/performance/indexes.html
我认为当您插入行时,索引会更新。它在您插入数据时维护索引表上的排序。因此,如果您尝试一次添加大量行,则会导致表上的性能问题或停机。
答案 2 :(得分:2)
除了其他答案之外:PostgreSQL是一个顶尖的关系数据库。我不知道任何关系数据库系统,其中索引不自动更新。
答案 3 :(得分:0)
它似乎取决于索引的类型。例如,根据https://www.postgresql.org/docs/9.5/brin-intro.html,对于BRIN索引:
当创建的新页面不在上一个汇总范围内时,该范围不会自动获取汇总元组;这些元组将保持未摘要状态,直到稍后调用摘要运行以创建初始摘要。可以使用brin_summarize_new_values(regclass)函数手动调用此过程,或者在VACUUM处理表时自动调用该过程。
尽管在版本10中似乎已更改。