postgresql 在事务中创建和使用索引

pod7payv  于 2023-05-28  发布在  PostgreSQL
关注(0)|答案(2)|浏览(274)

我有一个缓慢的删除查询。正如建议的here,当我添加索引时,我得到了更好的结果。除了这个场景,我不需要这个索引,所以我做的是:
1.添加索引。
1.已删除行。
1.掉了索引。
有没有可能在一个事务中完成这3个步骤,而根本不提交这个索引,但仍然能够在delete查询中使用它?

xesrikrc

xesrikrc1#

是的,您可以在事务中创建索引(除非您使用CONCURRENTLY)。但是,这是一个坏主意:CREATE INDEX锁定表,防止所有数据修改,并且该锁定将一直保持到您的事务结束。因此,您将对并发SQL语句的影响比使用一个额外的索引更大。

2uluyalo

2uluyalo2#

创建索引,运行查询,然后删除索引,这样做对您自己没有任何好处。
CREATE INDEX的计算和I/O工作负载非常重要。而且,维护索引的开销是适度的,除非在运行删除查询之间对生产中的表进行了大量更改(INSERT、UPDATE和DELETE)。而且存储开销很可能是相当合理的。HDD / SSD存储很便宜,而且越来越便宜。使用索引不会影响SELECT查询的性能,并且可能有助于某些查询。
因此,虽然您可以创建索引,运行查询,并将索引放入事务中,但您几乎肯定最好创建索引并将其留在原地。

相关问题