创建一张表,在没有primary key 或者 unique key 的情况下,GreenPlum默认会把第一个column作为分布键
- zwcdb=# create table tab01(id int,name varchar(20));
- NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'id' as the Greenplum Database data distribution key for this table.
- HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
- CREATE TABLE
- zwcdb=#
- zwcdb=# \d+ tab01
- Table "public.tab01"
- Column | Type | Modifiers | Storage | Description
- --------+-----------------------+-----------+----------+-------------
- id | integer | | plain |
- name | character varying(20) | | extended |
- Has OIDs: no
- Distributed by: (id)
使用以下语句修改分布键
- zwcdb=# alter table tab01 set distributed by(name);
- ALTER TABLE
- zwcdb=# \d+ tab01
- Table "public.tab01"
- Column | Type | Modifiers | Storage | Description
- --------+-----------------------+-----------+----------+-------------
- id | integer | | plain |
- name | character varying(20) | | extended |
- Has OIDs: no
- Distributed by: (name)
- zwcdb=# alter table tab01 set distributed randomly;
- ALTER TABLE
- zwcdb=# alter table tab01 set with(reorganize=true);
- ALTER TABLE
- zwcdb=# \d+ tab01
- Table "public.tab01"
- Column | Type | Modifiers | Storage | Description
- --------+-----------------------+-----------+----------+-------------
- id | integer | | plain |
- name | character varying(20) | | extended |
- Has OIDs: no
- Distributed randomly