您如何计算在大型 Postgresql 表上创建索引的时间?

Posted

技术标签:

【中文标题】您如何计算在大型 Postgresql 表上创建索引的时间?【英文标题】:How do you calculate the time to create an index on a large Postgresql table? 【发布时间】:2016-12-24 12:16:03 【问题描述】:

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

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

【问题讨论】:

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

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

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

对于一些警告,check the documentation。

【讨论】:

谢谢!很高兴知道。

以上是关于您如何计算在大型 Postgresql 表上创建索引的时间?的主要内容,如果未能解决你的问题,请参考以下文章

优化大型表上的 SQL 连接

使用 javascript 在多个表上创建搜索功能

在现有的大型表上创建列存储索引的最有效方法?

自定义表上的大型查询 - 内存问题

如何使用 PostgreSQL 中的变量创建具有内部连接的视图?

如何查看本地安装的Postgresql版本号