相关疑难解决方法(0)

varchar(x) 与“text CHECK ( char_length(x) )”一样快吗?

在 Twitter 交流中西蒙·韦斯特 (Simon West)向布兰杜尔 (Brandur)询问,

\n\n
\n

出于兴趣,为什么使用email TEXT CHECK (char_length(email) <= 255)而不是email VARCHAR(255)?我以前没有见过这种模式

\n
\n\n

布兰杜尔回应说,

\n\n
\n

很好的问题!

\n\n

(1) VARCHAR 和 TEXT 在 Postgres 中的性能相同(请参阅https://www.postgresql.org/docs/current/static/datatype-character.html \xe2\x80\xa6中的“提示”框)。\n 。

\n\n

(2) 如果您想更改长度,ALTER TABLE则需要独占锁(请参阅https://www.postgresql.org/docs/current/static/sql-altertable.html \xe2\x80\xa6)。改变CHECK是即时的。\n 当回答一个引起质疑的问题时text CHECK (char_length(email) <= 255)vsvarchar(255)

\n
\n\n

这两个断言中的第一个断言(粗体)是否严格正确?

\n\n

如果对第二个主张感兴趣,请查看此问题

\n

postgresql varchar check-constraints

5
推荐指数
1
解决办法
4691
查看次数

Postgres varchar(100)[] -&gt; text[] 列转换

我需要将列类型从 更改 varchar(100)[]text[]。该表有 > 100M 行和大量写入负载,因此我想避免获取访问排他锁并重写索引。我看到了这个问题,非阵列varchartext改变管理这一点,所以我想知道:做同样与阵列列应用?

文档+邮件列表表示,如果满足以下条件,此更改将很快:

旧类型要么是二进制强制转换为新类型,要么是新类型上的无约束域)

varchar(100)[]to是这种情况text[]吗?

postgresql datatypes alter-table ddl online-operations

3
推荐指数
1
解决办法
36
查看次数