Help Center/ GaussDB/ Developer Guide(Distributed_V2.0-8.x)/ FAQs/ If No Distribution Key Is Specified, How Will Data Be Stored?
Updated on 2025-05-29 GMT+08:00

If No Distribution Key Is Specified, How Will Data Be Stored?

Answer: If no distribution key is specified during table creation, data is stored as follows:

  • If the primary key or unique constraint is included during table creation, hash distribution is selected. The distribution key is the column corresponding to the primary key or unique constraint.
    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)
    
    -- Drop the table.
    gaussdb=# DROP TABLE tb_test1;
  • If the primary key or unique constraint is not included during table creation but there are columns whose data types can be used as distribution keys, hash distribution is selected. The distribution key is the first column whose data type can be used as a distribution key.
    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)
    
    -- Drop the table.
    gaussdb=# DROP TABLE tb_test2;
  • If the primary key or unique constraint is not included during table creation and no column whose data type can be used as a distribution key exists, round-robin distribution is selected.
    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)
    
    -- Drop the table.
    gaussdb=# DROP TABLE tb_test3;