【问题标题】:How do you calculate the time to create an index on a large Postgresql table?您如何计算在大型 Postgresql 表上创建索引的时间?
【发布时间】:2023-03-14 23:33:02
【问题描述】:

我有一个包含 2600 万行的 Postgres 表,我想添加一个索引布尔列。

在生产环境中尝试这种类型的操作之前,有没有办法计算出这种操作需要多长时间?

【问题讨论】:

  • 为什么要索引布尔列?这不会显着提高性能,因为布尔值只有两个选项是真/假,而唯一的东西可以通过索引来改进。
  • 我想索引布尔列只是因为我认为它会提高性能。您是否有任何资源或链接说 (1) 布尔列上的索引不会提高性能,或者 (2) 描述如何知道索引是否有帮助?
  • 这适用于 mysql,但同样的想法也适用。通过索引布尔列,您将发现查询的速度几乎没有提高。 stackoverflow.com/a/1845014/1729859 还有stackoverflow.com/a/10524734/1729859
  • 嗨,Carolyn,您最后是否承担了这个索引的创建工作?如果有,需要多长时间?
  • @ScaryWombat 如果我没记错的话,我想运行它只需要一两分钟。不幸的是,我仍然没有找到一个好的方法来提前估计那种事情¯_(ツ)_/¯

标签: sql database postgresql indexing database-migration


【解决方案1】:

没有办法计算索引时间,因为它取决于许多因素(硬件、软件、配置、负载等)

好消息是你可以CREATE INDEX CONCURRENTLY,这需要更长的时间但不会锁表。因此该操作除了服务器负载较高之外没有任何副作用。

对于一些警告,check the documentation

【讨论】:

  • 谢谢!很高兴知道。
猜你喜欢
  • 2018-01-18
  • 2015-06-27
  • 2021-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-27
相关资源
最近更新 更多