Skip to main content

ALTER STATS

Description

Manually modify the statistics of a specified column in a specified table. Please refer to the "Statistics" chapter.

Syntax

ALTER TABLE <table_name>
[ INDEX <index_name> ]
MODIFY COLUMN <column_name>
SET STATS (<column_stats>)

Where:

column_stats
: -- column stats value
("key1" = "value1", "key2" = "value2" [...])

Required Parameters

<table_name>

Specifies the identifier (i.e., name) of the table.

<column_name>

Specifies the column identifier (i.e., name). When <index_name> is not specified, it is the column name of the base table.

<column_stats>

The statistics value to be set, given in the form of key = value, where both key and value need to be enclosed in quotation marks, and key-value pairs are separated by commas. The statistics that can be set include:

row_count, total number of rows

ndv, cardinality of the column

num_nulls, number of null values in the column

data_size, total size of the column

min_value, minimum value of the column

max_value, maximum value of the column

Among them, row_count must be specified, and other attributes are optional. If not set, the corresponding statistic attribute value for that column will be empty.

Optional Parameters

<index_name>

Synchronized materialized view (please refer to the "Synchronized Materialized Views" chapter) identifier (i.e., name). A table can have 0 to multiple materialized views. If you need to set the statistics of a column in a materialized view, you need to use <index_name> to specify the name of the materialized view. If not specified, the properties of the column in the base table are set.

Access Control Requirements

The user executing this SQL command must have at least the following privileges:

PrivilegeObjectNotes
ALTER_PRIVTable

Usage Notes

After a user manually injects statistics into a table, the table will no longer participate in the automatic collection of statistics (please refer to the "Automatic Collection of Statistics" chapter) to avoid overwriting the statistics manually injected by the user. If the injected statistics are no longer used, the drop stats statement can be used to delete the already injected information, which allows the table to re-enable automatic collection.

Examples

  • Inject statistics into the p_partkey column of the part table (base table column, as no index_name is specified).

    alter 
    table part
    modify column p_partkey
    set stats ('row_count'='2.0E7', 'ndv'='2.0252576E7', 'num_nulls'='0.0', 'data_size'='8.0E7', 'min_value'='1', 'max_value'='20000000');
  • Inject statistics into the col1 column of the index1 materialized view of the part table (materialized view column, as index_name is specified).

    alter 
    table part index index1
    modify column col1
    set stats ('row_count'='2.0E7', 'ndv'='2.0252576E7', 'num_nulls'='0.0', 'data_size'='8.0E7', 'min_value'='1', 'max_value'='20000000');