我有这两个相同的表:
Table "public.region"
Column | Type | Collation | Nullable | Default
-------------+----------+-----------+----------+---------
r_regionkey | integer | | not null |
r_name | char(25) | | |
r_comment | char(152) | | |
Indexes:
"region_pkey" PRIMARY KEY, btree (r_regionkey)
和
Table "public.region2"
Column | Type | Collation | Nullable | Default
-------------+----------+-----------+----------+---------
r_regionkey | smallint | | not null |
r_name | text | | |
r_comment | text | | |
Indexes:
"region_pkey" PRIMARY KEY, btree (r_regionkey)
我正在使用smallint
andtext
为了节省空间,但奇怪的是结果如下:
select pg_size_pretty(pg_table_size('region'))
返回8192 bytes
时
select pg_size_pretty(pg_table_size('region2'))
返回48 kB
。
为什么要region2
占用更多空间,即使我使用的是smallint
代替integer
和text
代替char(n)
?