'\" t .\" Title: CREATE STATISTICS .\" Author: The PostgreSQL Global Development Group .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 2021 .\" Manual: PostgreSQL 11.12 Documentation .\" Source: PostgreSQL 11.12 .\" Language: English .\" .TH "CREATE STATISTICS" "7" "2021" "PostgreSQL 11.12" "PostgreSQL 11.12 Documentation" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" CREATE_STATISTICS \- define extended statistics .SH "SYNOPSIS" .sp .nf CREATE STATISTICS [ IF NOT EXISTS ] \fIstatistics_name\fR [ ( \fIstatistics_kind\fR [, \&.\&.\&. ] ) ] ON \fIcolumn_name\fR, \fIcolumn_name\fR [, \&.\&.\&.] FROM \fItable_name\fR .fi .SH "DESCRIPTION" .PP \fBCREATE STATISTICS\fR will create a new extended statistics object tracking data about the specified table, foreign table or materialized view\&. The statistics object will be created in the current database and will be owned by the user issuing the command\&. .PP If a schema name is given (for example, CREATE STATISTICS myschema\&.mystat \&.\&.\&.) then the statistics object is created in the specified schema\&. Otherwise it is created in the current schema\&. The name of the statistics object must be distinct from the name of any other statistics object in the same schema\&. .SH "PARAMETERS" .PP IF NOT EXISTS .RS 4 Do not throw an error if a statistics object 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, not the details of its definition\&. .RE .PP \fIstatistics_name\fR .RS 4 The name (optionally schema\-qualified) of the statistics object to be created\&. .RE .PP \fIstatistics_kind\fR .RS 4 A statistics kind to be computed in this statistics object\&. Currently supported kinds are ndistinct, which enables n\-distinct statistics, and dependencies, which enables functional dependency statistics\&. If this clause is omitted, all supported statistics kinds are included in the statistics object\&. For more information, see Section\ \&14.2.2 and Section\ \&70.2\&. .RE .PP \fIcolumn_name\fR .RS 4 The name of a table column to be covered by the computed statistics\&. At least two column names must be given\&. .RE .PP \fItable_name\fR .RS 4 The name (optionally schema\-qualified) of the table containing the column(s) the statistics are computed on\&. .RE .SH "NOTES" .PP You must be the owner of a table to create a statistics object reading it\&. Once created, however, the ownership of the statistics object is independent of the underlying table(s)\&. .SH "EXAMPLES" .PP 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 dependency statistics are built on those columns: .sp .if n \{\ .RS 4 .\} .nf CREATE TABLE t1 ( a int, b int ); INSERT INTO t1 SELECT i/100, i/500 FROM generate_series(1,1000000) s(i); ANALYZE t1; \-\- the number of matching rows will be drastically underestimated: EXPLAIN ANALYZE SELECT * FROM t1 WHERE (a = 1) AND (b = 0); CREATE STATISTICS s1 (dependencies) ON a, b FROM t1; ANALYZE t1; \-\- now the row count estimate is more accurate: EXPLAIN ANALYZE SELECT * FROM t1 WHERE (a = 1) AND (b = 0); .fi .if n \{\ .RE .\} .sp Without functional\-dependency statistics, the planner would assume that the two WHERE conditions are independent, and would multiply their selectivities together to arrive at a much\-too\-small row count estimate\&. With such statistics, the planner recognizes that the WHERE conditions are redundant and does not underestimate the row count\&. .SH "COMPATIBILITY" .PP There is no \fBCREATE STATISTICS\fR command in the SQL standard\&. .SH "SEE ALSO" ALTER STATISTICS (\fBALTER_STATISTICS\fR(7)), DROP STATISTICS (\fBDROP_STATISTICS\fR(7))