
# 如果建表时没有指定分布列，数据会怎么存储？
答：建表时没有指定分布列，数据会以如下三种场景存储：
- 若建表时包含主键/唯一约束，则选取HASH分布，分布列为主键/唯一约束对应的列。
  ```
  gaussdb=# CREATE TABLE tb_test1
  (
      W_WAREHOUSE_SK            INTEGER            PRIMARY KEY,
      W_WAREHOUSE_ID            CHAR(16)              NOT NULL,
      W_WAREHOUSE_NAME          VARCHAR(20)                   
  );
  NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "tb_test1_pkey" for table "tb_test1"
  CREATE TABLE
  gaussdb=# SELECT getdistributekey('tb_test1');
   getdistributekey
  ------------------
   w_warehouse_sk
  (1 row)
  --删除表。
  gaussdb=# DROP TABLE tb_test1;
  ```
  
- 若建表时不包含主键/唯一约束，但存在数据类型支持作分布列的列，则选取HASH分布，分布列为第一个数据类型支持作分布列的列。
  ```
  gaussdb=# CREATE TABLE tb_test2
  (
      W_WAREHOUSE_SK            INTEGER                       ,
      W_WAREHOUSE_ID            CHAR(16)              NOT NULL,
      W_WAREHOUSE_NAME          VARCHAR(20)                   
  );
  NOTICE:  The 'DISTRIBUTE BY' clause is not specified. Using 'w_warehouse_sk' as the distribution column by default.
  HINT:  Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column.
  CREATE TABLE
  gaussdb=# SELECT getdistributekey('tb_test2');
   getdistributekey
  ------------------
   w_warehouse_sk
  (1 row)
  --删除表。
  gaussdb=# DROP TABLE tb_test2;
  ```
  
- 若建表时不包含主键/唯一约束，也不存在数据类型支持作分布列的列，选取ROUNDROBIN分布。
  ```
  gaussdb=# CREATE TABLE tb_test3
  (
      W_WAREHOUSE_ID            CHAR(16)              NOT NULL,
      W_WAREHOUSE_NAME          VARCHAR(20)                   
  );
  NOTICE:  The 'DISTRIBUTE BY' clause is not specified. Using 'w_warehouse_id' as the distribution column by default.
  HINT:  Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column.
  CREATE TABLE
  gaussdb=# SELECT getdistributekey('tb_test3');
   getdistributekey
  ------------------
   w_warehouse_id
  (1 row)
  --删除表。
  gaussdb=# DROP TABLE tb_test3;
  ```
  
 
