我有一个像pg这样的表:
CREATE TABLE t (
a BIGSERIAL NOT NULL, -- 8 b
b SMALLINT, -- 2 b
c SMALLINT, -- 2 b
d REAL, -- 4 b
e REAL, -- 4 b
f REAL, -- 4 b
g INTEGER, -- 4 b
h REAL, -- 4 b
i REAL, -- 4 b
j SMALLINT, -- 2 b
k INTEGER, -- 4 b
l INTEGER, -- 4 b
m REAL, -- 4 b
CONSTRAINT a_pkey PRIMARY KEY (a)
);
Run Code Online (Sandbox Code Playgroud)
以上每行最多可添加50个字节.我的经验是,我需要另外40%到50%的系统开销,甚至没有任何用户创建的索引.所以,每行约75个字节.我将在表中有许多行,可能超过1450亿行,因此该表将推动13-14太字节.我可以使用什么技巧来压缩这个表?我的可能想法如下......
将 …
我创建了一个包含85列的表,但我错过了一列.错过的列应该是第57行(列的位置).我不想删除该表,也不想再创建它,我需要编辑该表,我必须在第57行添加该列
ALTER table table_name
Add column column_name57 integer
Run Code Online (Sandbox Code Playgroud)
如何在第57行调用该列
我正在尝试在"位置"列之后向现有的Postgres表添加一个新列"纬度".
使用此语法将列放在正确的位置:
add_column :table, :column, :decimal, :after => :existing_column
Run Code Online (Sandbox Code Playgroud)
使用此语法可确保该字段是正确的数据类型
add_column :table, :column, :decimal, {:precision => 10, :scale => 6}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试将两者结合起来时:
add_column :table, :column, :decimal, {:precision => 10, :scale => 6}, :after => :existing_column
Run Code Online (Sandbox Code Playgroud)
我得到"ArgumentError:错误的参数数量(5为3..4)"
"不用担心",我想,"我只会把争论结合起来!":
add_column :table, :column, :decimal, {:precision => 10, :scale => 6, :after => :existing_column}
Run Code Online (Sandbox Code Playgroud)
但是这些列出现在表的末尾.我究竟做错了什么?
谢谢 :)