AKW*_*KWF 5 postgresql postgresql-10 citext
我在应用程序中的一个特别大的表上过度使用了 CITEXT 列。我想支持其中一些,因为如何触发所需索引的查找令人困惑。
我的问题是,我可以在不遇到任何重大困难的情况下做到这一点吗?如果我更改此设置,我是否需要重建这些字段上的任何索引?
朝这个方向发展会带来空间收益吗?
这些列不需要不区分大小写的查询。
我对该表进行了基于 2 列的计数,这些计数需要一个多小时。该表有 60 列。
我正在使用 Postgres 10.6。
我主要感兴趣的是,如果索引包含已从 CITEXT 更改为 VARCHAR 的列,是否需要重建索引。
朝这个方向发展会带来空间收益吗?
号citext
和text
(或varchar
)在磁盘和 RAM 中占用相同的空间。
这些列不需要不区分大小写的查询。
那么就没有使用的意义了citext
。
我对该表进行了基于 2 列的计数,这些计数需要一个多小时。该表有 60 列。
count()
根本不受citext
vs. text
(或) 的影响。varchar
“60 列”可能值得研究。如果您确实需要所有这些,那没问题 - 但您需要吗?您是否使用了正确的数据类型等?
我主要感兴趣的是,如果索引包含已从 CITEXT 更改为 VARCHAR 的列,是否需要重建索引。
涉及该列的索引会自动转换。(这可能意味着重建索引。)手册ALTER TABLE
:
SET DATA TYPE
这种形式改变表的列的类型。通过重新分析最初提供的表达式,涉及该列的索引和简单表约束将自动转换为使用新的列类型。
当涉及不适用于新类型(对于表达式或部分索引)的表达式时,它可能会失败。您必须删除此类索引,并在更改后以适当的形式重新创建它们。
就我个人而言,在经历了复杂的经历后,我会远离它citext
。考虑手册中讨论的限制。
归档时间: |
|
查看次数: |
4930 次 |
最近记录: |