CREATE STATISTICS
CREATE STATISTICS
7
SQL - Language Statements
CREATE STATISTICS
define extended statistics
CREATE STATISTICS [ IF NOT EXISTS ] statistics_name ON (
column_name, column_name [, ...])
FROM table_name
Description
CREATE STATISTICS will create a new extended statistics
object on the specified table.
The statistics will be created in the current database and
will be owned by the user issuing the command.
If a schema name is given (for example, CREATE STATISTICS
myschema.mystat ...>) then the statistics is created in the specified
schema. Otherwise it is created in the current schema. The name of
the statistics must be distinct from the name of any other statistics in the
same schema.
Parameters
IF NOT EXISTS>
Do not throw an error if a statistics with the same name already exists.
A notice is issued in this case. Note that only the name of the
statistics object is considered here. The definition of the statistics is
not considered.
statistics_name
The name (optionally schema-qualified) of the statistics to be created.
column_name
The name of a column to be included in the statistics.
table_name
The name (optionally schema-qualified) of the table the statistics should
be created on.
Notes
You must be the owner of a table to create or change statistics on it.
Examples
Create table t1> with two functionally dependent columns, i.e.
knowledge of a value in the first column is sufficient for determining the
value in the other column. Then functional dependencies are built on those
columns:
CREATE TABLE t1 (
a int,
b int
);
INSERT INTO t1 SELECT i/100, i/500
FROM generate_series(1,1000000) s(i);
CREATE STATISTICS s1 ON (a, b) FROM t1;
ANALYZE t1;
-- valid combination of values
EXPLAIN ANALYZE SELECT * FROM t1 WHERE (a = 1) AND (b = 0);
-- invalid combination of values
EXPLAIN ANALYZE SELECT * FROM t1 WHERE (a = 1) AND (b = 1);
Compatibility
There's no CREATE STATISTICS command in the SQL standard.
See Also