
# 如果DWS建表时没有指定分布列，数据会怎么存储？
![](https://support.huaweicloud.com/dws_faq/public_sys-resources/note_3.0-zh-cn.png)
8.1.2及以上集群版本，可通过GUC参数default_distribution_mode来查询和设置表的默认分布方式。
如果建表时没有指定分布列，数据会按以下几种场景来存储：
- 场景一 若建表时包含主键/唯一约束，则选取HASH分布，分布列为主键/唯一约束对应的列。
  ```
  CREATE TABLE warehouse1
  (
      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 "warehouse1_pkey" for table "warehouse1"
  CREATE TABLE
  SELECT getdistributekey('warehouse1');
   getdistributekey
  ------------------
   w_warehouse_sk
  (1 row)
  ```
  
- 场景二 若建表时不包含主键/唯一约束，但存在数据类型支持作分布列的列，则选取HASH分布，分布列为第一个数据类型支持作分布列的列。
  ```
  CREATE TABLE warehouse2
  (
      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
  SELECT getdistributekey('warehouse2');
   getdistributekey
  ------------------
   w_warehouse_sk
  (1 row)
  ```
  
- 场景三 若建表时不包含主键/唯一约束，也不存在数据类型支持作分布列的列，选取ROUNDROBIN分布。
  ```
  CREATE TABLE warehouse3
  (
      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
  SELECT getdistributekey('warehouse3');
   getdistributekey
  ------------------
   w_warehouse_id
  (1 row)
  ```
  
 
