我正在向一个大型的(50亿行) Postgres (9.6)表中添加一个新列(bigints,初始值都为null)。
我想在行中添加一个索引(算法:并发),我想知道是否有一种方法可以节省扫描所有50亿个空字段的时间,以便将它们添加到索引中,因为当列是全新的且没有数据时,我要添加索引。对此是否有任何优化,还是应该让它运行?(从理论上讲,是否有可能进行优化,或者是否需要在索引中添加一些内容,即使是空字段?)
发布于 2019-04-11 18:49:23
不,对不起。
PostgreSQL通常对空字段进行索引,因此必须为每一行添加一个条目。您可以创建索引而不是索引NULL(使用部分索引,或者使用非默认类型的索引,而不是索引NULL),但是对于这样的索引,没有实现它来观察列上的all-NULL约束,因此采取不扫描表的捷径。它会无济于事地扫描桌子,寻找没有不过,这主意很有趣。
https://dba.stackexchange.com/questions/234590
复制相似问题