--- title: "The SQL Language" id: sql pg_version: "20devel" --- Part II. The SQL LanguageThis part describes the use of the SQL language in PostgreSQL. We start with describing the general syntax of SQL, then how to create tables, how to populate the database, and how to query it. The middle part lists the available data types and functions for use in SQL commands. Lastly, we address several aspects of importance for tuning a database. The information is arranged so that a novice user can follow it from start to end and gain a full understanding of the topics without having to refer forward too many times. The chapters are intended to be self-contained, so that advanced users can read the chapters individually as they choose. The information is presented in narrative form with topical units. Readers looking for a complete description of a particular command are encouraged to review the [Part VI](reference.md). Readers should know how to connect to a PostgreSQL database and issue SQL commands. Readers that are unfamiliar with these issues are encouraged to read [Part I](tutorial.md) first. SQL commands are typically entered using the PostgreSQL interactive terminal psql, but other programs that have similar functionality can be used as well. ## Table of Contents - [4. SQL Syntax](sql-syntax.md) - [4.1. Lexical Structure](sql-syntax-lexical.md) - [4.1.1. Identifiers and Key Words](sql-syntax-lexical.md#sql-syntax-identifiers) - [4.1.2. Constants](sql-syntax-lexical.md#sql-syntax-constants) - [4.1.3. Operators](sql-syntax-lexical.md#sql-syntax-operators) - [4.1.4. Special Characters](sql-syntax-lexical.md#sql-syntax-special-chars) - [4.1.5. Comments](sql-syntax-lexical.md#sql-syntax-comments) - [4.1.6. Operator Precedence](sql-syntax-lexical.md#sql-precedence) - [4.2. Value Expressions](sql-expressions.md) - [4.2.1. Column References](sql-expressions.md#sql-expressions-column-refs) - [4.2.2. Positional Parameters](sql-expressions.md#sql-expressions-parameters-positional) - [4.2.3. Subscripts](sql-expressions.md#sql-expressions-subscripts) - [4.2.4. Field Selection](sql-expressions.md#field-selection) - [4.2.5. Operator Invocations](sql-expressions.md#sql-expressions-operator-calls) - [4.2.6. Function Calls](sql-expressions.md#sql-expressions-function-calls) - [4.2.7. Aggregate Expressions](sql-expressions.md#syntax-aggregates) - [4.2.8. Window Function Calls](sql-expressions.md#syntax-window-functions) - [4.2.9. Type Casts](sql-expressions.md#sql-syntax-type-casts) - [4.2.10. Collation Expressions](sql-expressions.md#sql-syntax-collate-exprs) - [4.2.11. Scalar Subqueries](sql-expressions.md#sql-syntax-scalar-subqueries) - [4.2.12. Array Constructors](sql-expressions.md#sql-syntax-array-constructors) - [4.2.13. Row Constructors](sql-expressions.md#sql-syntax-row-constructors) - [4.2.14. Expression Evaluation Rules](sql-expressions.md#syntax-express-eval) - [4.3. Calling Functions](sql-syntax-calling-funcs.md) - [4.3.1. Using Positional Notation](sql-syntax-calling-funcs.md#sql-syntax-calling-funcs-positional) - [4.3.2. Using Named Notation](sql-syntax-calling-funcs.md#sql-syntax-calling-funcs-named) - [4.3.3. Using Mixed Notation](sql-syntax-calling-funcs.md#sql-syntax-calling-funcs-mixed) - [5. Data Definition](ddl.md) - [5.1. Table Basics](ddl-basics.md) - [5.2. Default Values](ddl-default.md) - [5.3. Identity Columns](ddl-identity-columns.md) - [5.4. Generated Columns](ddl-generated-columns.md) - [5.5. Constraints](ddl-constraints.md) - [5.5.1. Check Constraints](ddl-constraints.md#ddl-constraints-check-constraints) - [5.5.2. Not-Null Constraints](ddl-constraints.md#ddl-constraints-not-null) - [5.5.3. Unique Constraints](ddl-constraints.md#ddl-constraints-unique-constraints) - [5.5.4. Primary Keys](ddl-constraints.md#ddl-constraints-primary-keys) - [5.5.5. Foreign Keys](ddl-constraints.md#ddl-constraints-fk) - [5.5.6. Exclusion Constraints](ddl-constraints.md#ddl-constraints-exclusion) - [5.6. System Columns](ddl-system-columns.md) - [5.7. Temporal Tables](ddl-temporal-tables.md) - [5.7.1. Application Time](ddl-temporal-tables.md#ddl-application-time) - [5.7.2. System Time](ddl-temporal-tables.md#ddl-system-time) - [5.8. Modifying Tables](ddl-alter.md) - [5.8.1. Adding a Column](ddl-alter.md#ddl-alter-adding-a-column) - [5.8.2. Removing a Column](ddl-alter.md#ddl-alter-removing-a-column) - [5.8.3. Adding a Constraint](ddl-alter.md#ddl-alter-adding-a-constraint) - [5.8.4. Removing a Constraint](ddl-alter.md#ddl-alter-removing-a-constraint) - [5.8.5. Changing a Column's Default Value](ddl-alter.md#ddl-alter-column-default) - [5.8.6. Changing a Column's Data Type](ddl-alter.md#ddl-alter-column-type) - [5.8.7. Renaming a Column](ddl-alter.md#ddl-alter-renaming-column) - [5.8.8. Renaming a Table](ddl-alter.md#ddl-alter-renaming-table) - [5.9. Privileges](ddl-priv.md) - [5.10. Row Security Policies](ddl-rowsecurity.md) - [5.11. Schemas](ddl-schemas.md) - [5.11.1. Creating a Schema](ddl-schemas.md#ddl-schemas-create) - [5.11.2. The Public Schema](ddl-schemas.md#ddl-schemas-public) - [5.11.3. The Schema Search Path](ddl-schemas.md#ddl-schemas-path) - [5.11.4. Schemas and Privileges](ddl-schemas.md#ddl-schemas-priv) - [5.11.5. The System Catalog Schema](ddl-schemas.md#ddl-schemas-catalog) - [5.11.6. The Conflict Schema](ddl-schemas.md#ddl-schemas-conflict) - [5.11.7. Usage Patterns](ddl-schemas.md#ddl-schemas-patterns) - [5.11.8. Portability](ddl-schemas.md#ddl-schemas-portability) - [5.12. Inheritance](ddl-inherit.md) - [5.12.1. Caveats](ddl-inherit.md#ddl-inherit-caveats) - [5.13. Table Partitioning](ddl-partitioning.md) - [5.13.1. Overview](ddl-partitioning.md#ddl-partitioning-overview) - [5.13.2. Declarative Partitioning](ddl-partitioning.md#ddl-partitioning-declarative) - [5.13.3. Partitioning Using Inheritance](ddl-partitioning.md#ddl-partitioning-using-inheritance) - [5.13.4. Partition Pruning](ddl-partitioning.md#ddl-partition-pruning) - [5.13.5. Partitioning and Constraint Exclusion](ddl-partitioning.md#ddl-partitioning-constraint-exclusion) - [5.13.6. Best Practices for Declarative Partitioning](ddl-partitioning.md#ddl-partitioning-declarative-best-practices) - [5.14. Foreign Data](ddl-foreign-data.md) - [5.15. Property Graphs](ddl-property-graphs.md) - [5.16. Other Database Objects](ddl-others.md) - [5.17. Dependency Tracking](ddl-depend.md) - [6. Data Manipulation](dml.md) - [6.1. Inserting Data](dml-insert.md) - [6.2. Updating Data](dml-update.md) - [6.3. Deleting Data](dml-delete.md) - [6.4. Updating and Deleting Temporal Data](dml-application-time-update-delete.md) - [6.5. Returning Data from Modified Rows](dml-returning.md) - [7. Queries](queries.md) - [7.1. Overview](queries-overview.md) - [7.2. Table Expressions](queries-table-expressions.md) - [7.2.1. The `FROM` Clause](queries-table-expressions.md#queries-from) - [7.2.2. The `WHERE` Clause](queries-table-expressions.md#queries-where) - [7.2.3. The `GROUP BY` and `HAVING` Clauses](queries-table-expressions.md#queries-group) - [7.2.4. `GROUPING SETS`, `CUBE`, and `ROLLUP`](queries-table-expressions.md#queries-grouping-sets) - [7.2.5. Window Function Processing](queries-table-expressions.md#queries-window) - [7.3. Select Lists](queries-select-lists.md) - [7.3.1. Select-List Items](queries-select-lists.md#queries-select-list-items) - [7.3.2. Column Labels](queries-select-lists.md#queries-column-labels) - [7.3.3. `DISTINCT`](queries-select-lists.md#queries-distinct) - [7.4. Combining Queries (`UNION`, `INTERSECT`, `EXCEPT`)](queries-union.md) - [7.5. Sorting Rows (`ORDER BY`)](queries-order.md) - [7.6. `LIMIT` and `OFFSET`](queries-limit.md) - [7.7. `VALUES` Lists](queries-values.md) - [7.8. `WITH` Queries (Common Table Expressions)](queries-with.md) - [7.8.1. `SELECT` in `WITH`](queries-with.md#queries-with-select) - [7.8.2. Recursive Queries](queries-with.md#queries-with-recursive) - [7.8.3. Common Table Expression Materialization](queries-with.md#queries-with-cte-materialization) - [7.8.4. Data-Modifying Statements in `WITH`](queries-with.md#queries-with-modifying) - [7.9. Graph Queries](queries-graph.md) - [7.9.1. Overview](queries-graph.md#queries-graph-overview) - [7.9.2. Graph Patterns](queries-graph.md#queries-graph-patterns) - [8. Data Types](datatype.md) - [8.1. Numeric Types](datatype-numeric.md) - [8.1.1. Integer Types](datatype-numeric.md#datatype-int) - [8.1.2. Arbitrary Precision Numbers](datatype-numeric.md#datatype-numeric-decimal) - [8.1.3. Floating-Point Types](datatype-numeric.md#datatype-float) - [8.1.4. Serial Types](datatype-numeric.md#datatype-serial) - [8.2. Monetary Types](datatype-money.md) - [8.3. Character Types](datatype-character.md) - [8.4. Binary Data Types](datatype-binary.md) - [8.4.1. `bytea` Hex Format](datatype-binary.md#datatype-binary-bytea-hex-format) - [8.4.2. `bytea` Escape Format](datatype-binary.md#datatype-binary-bytea-escape-format) - [8.5. Date/Time Types](datatype-datetime.md) - [8.5.1. Date/Time Input](datatype-datetime.md#datatype-datetime-input) - [8.5.2. Date/Time Output](datatype-datetime.md#datatype-datetime-output) - [8.5.3. Time Zones](datatype-datetime.md#datatype-timezones) - [8.5.4. Interval Input](datatype-datetime.md#datatype-interval-input) - [8.5.5. Interval Output](datatype-datetime.md#datatype-interval-output) - [8.6. Boolean Type](datatype-boolean.md) - [8.7. Enumerated Types](datatype-enum.md) - [8.7.1. Declaration of Enumerated Types](datatype-enum.md#datatype-enum-declaration) - [8.7.2. Ordering](datatype-enum.md#datatype-enum-ordering) - [8.7.3. Type Safety](datatype-enum.md#datatype-enum-type-safety) - [8.7.4. Implementation Details](datatype-enum.md#datatype-enum-implementation-details) - [8.8. Geometric Types](datatype-geometric.md) - [8.8.1. Points](datatype-geometric.md#datatype-geometric-points) - [8.8.2. Lines](datatype-geometric.md#datatype-line) - [8.8.3. Line Segments](datatype-geometric.md#datatype-lseg) - [8.8.4. Boxes](datatype-geometric.md#datatype-geometric-boxes) - [8.8.5. Paths](datatype-geometric.md#datatype-geometric-paths) - [8.8.6. Polygons](datatype-geometric.md#datatype-polygon) - [8.8.7. Circles](datatype-geometric.md#datatype-circle) - [8.9. Network Address Types](datatype-net-types.md) - [8.9.1. `inet`](datatype-net-types.md#datatype-inet) - [8.9.2. `cidr`](datatype-net-types.md#datatype-cidr) - [8.9.3. `inet` vs. `cidr`](datatype-net-types.md#datatype-inet-vs-cidr) - [8.9.4. `macaddr`](datatype-net-types.md#datatype-macaddr) - [8.9.5. `macaddr8`](datatype-net-types.md#datatype-macaddr8) - [8.10. Bit String Types](datatype-bit.md) - [8.11. Text Search Types](datatype-textsearch.md) - [8.11.1. `tsvector`](datatype-textsearch.md#datatype-tsvector) - [8.11.2. `tsquery`](datatype-textsearch.md#datatype-tsquery) - [8.12. UUID Type](datatype-uuid.md) - [8.13. XML Type](datatype-xml.md) - [8.13.1. Creating XML Values](datatype-xml.md#datatype-xml-creating) - [8.13.2. Encoding Handling](datatype-xml.md#datatype-xml-encoding-handling) - [8.13.3. Accessing XML Values](datatype-xml.md#datatype-xml-accessing-xml-values) - [8.14. JSON Types](datatype-json.md) - [8.14.1. JSON Input and Output Syntax](datatype-json.md#json-keys-elements) - [8.14.2. Designing JSON Documents](datatype-json.md#json-doc-design) - [8.14.3. `jsonb` Containment and Existence](datatype-json.md#json-containment) - [8.14.4. `jsonb` Indexing](datatype-json.md#json-indexing) - [8.14.5. `jsonb` Subscripting](datatype-json.md#jsonb-subscripting) - [8.14.6. Transforms](datatype-json.md#datatype-json-transforms) - [8.14.7. jsonpath Type](datatype-json.md#datatype-jsonpath) - [8.15. Arrays](arrays.md) - [8.15.1. Declaration of Array Types](arrays.md#arrays-declaration) - [8.15.2. Array Value Input](arrays.md#arrays-input) - [8.15.3. Accessing Arrays](arrays.md#arrays-accessing) - [8.15.4. Modifying Arrays](arrays.md#arrays-modifying) - [8.15.5. Searching in Arrays](arrays.md#arrays-searching) - [8.15.6. Array Input and Output Syntax](arrays.md#arrays-io) - [8.16. Composite Types](rowtypes.md) - [8.16.1. Declaration of Composite Types](rowtypes.md#rowtypes-declaring) - [8.16.2. Constructing Composite Values](rowtypes.md#rowtypes-constructing) - [8.16.3. Accessing Composite Types](rowtypes.md#rowtypes-accessing) - [8.16.4. Modifying Composite Types](rowtypes.md#rowtypes-modifying) - [8.16.5. Using Composite Types in Queries](rowtypes.md#rowtypes-usage) - [8.16.6. Composite Type Input and Output Syntax](rowtypes.md#rowtypes-io-syntax) - [8.17. Range Types](rangetypes.md) - [8.17.1. Built-in Range and Multirange Types](rangetypes.md#rangetypes-builtin) - [8.17.2. Examples](rangetypes.md#rangetypes-examples) - [8.17.3. Inclusive and Exclusive Bounds](rangetypes.md#rangetypes-inclusivity) - [8.17.4. Infinite (Unbounded) Ranges](rangetypes.md#rangetypes-infinite) - [8.17.5. Range Input/Output](rangetypes.md#rangetypes-io) - [8.17.6. Constructing Ranges and Multiranges](rangetypes.md#rangetypes-construct) - [8.17.7. Discrete Range Types](rangetypes.md#rangetypes-discrete) - [8.17.8. Defining New Range Types](rangetypes.md#rangetypes-defining) - [8.17.9. Indexing](rangetypes.md#rangetypes-indexing) - [8.17.10. Constraints on Ranges](rangetypes.md#rangetypes-constraint) - [8.18. Domain Types](domains.md) - [8.19. Object Identifier Types](datatype-oid.md) - [8.20. `pg_lsn` Type](datatype-pg-lsn.md) - [8.21. Pseudo-Types](datatype-pseudo.md) - [9. Functions and Operators](functions.md) - [9.1. Logical Operators](functions-logical.md) - [9.2. Comparison Functions and Operators](functions-comparison.md) - [9.3. Mathematical Functions and Operators](functions-math.md) - [9.4. String Functions and Operators](functions-string.md) - [9.4.1. `format`](functions-string.md#functions-string-format) - [9.5. Binary String Functions and Operators](functions-binarystring.md) - [9.6. Bit String Functions and Operators](functions-bitstring.md) - [9.7. Pattern Matching](functions-matching.md) - [9.7.1. `LIKE`](functions-matching.md#functions-like) - [9.7.2. `SIMILAR TO` Regular Expressions](functions-matching.md#functions-similarto-regexp) - [9.7.3. POSIX Regular Expressions](functions-matching.md#functions-posix-regexp) - [9.8. Data Type Formatting Functions](functions-formatting.md) - [9.9. Date/Time Functions and Operators](functions-datetime.md) - [9.9.1. `EXTRACT`, `date_part`](functions-datetime.md#functions-datetime-extract) - [9.9.2. `date_trunc`](functions-datetime.md#functions-datetime-trunc) - [9.9.3. `date_bin`](functions-datetime.md#functions-datetime-bin) - [9.9.4. `AT TIME ZONE` and `AT LOCAL`](functions-datetime.md#functions-datetime-zoneconvert) - [9.9.5. Current Date/Time](functions-datetime.md#functions-datetime-current) - [9.9.6. Delaying Execution](functions-datetime.md#functions-datetime-delay) - [9.10. Enum Support Functions](functions-enum.md) - [9.11. Geometric Functions and Operators](functions-geometry.md) - [9.12. Network Address Functions and Operators](functions-net.md) - [9.13. Text Search Functions and Operators](functions-textsearch.md) - [9.14. TID Functions](functions-tid.md) - [9.15. UUID Functions](functions-uuid.md) - [9.16. XML Functions](functions-xml.md) - [9.16.1. Producing XML Content](functions-xml.md#functions-producing-xml) - [9.16.2. XML Predicates](functions-xml.md#functions-xml-predicates) - [9.16.3. Processing XML](functions-xml.md#functions-xml-processing) - [9.16.4. Mapping Tables to XML](functions-xml.md#functions-xml-mapping) - [9.17. JSON Functions and Operators](functions-json.md) - [9.17.1. Processing and Creating JSON Data](functions-json.md#functions-json-processing) - [9.17.2. The SQL/JSON Path Language](functions-json.md#functions-sqljson-path) - [9.17.3. SQL/JSON Query Functions](functions-json.md#sqljson-query-functions) - [9.17.4. JSON_TABLE](functions-json.md#functions-sqljson-table) - [9.18. Sequence Manipulation Functions](functions-sequence.md) - [9.19. Conditional Expressions](functions-conditional.md) - [9.19.1. `CASE`](functions-conditional.md#functions-case) - [9.19.2. `COALESCE`](functions-conditional.md#functions-coalesce-nvl-ifnull) - [9.19.3. `NULLIF`](functions-conditional.md#functions-nullif) - [9.19.4. `GREATEST` and `LEAST`](functions-conditional.md#functions-greatest-least) - [9.20. Array Functions and Operators](functions-array.md) - [9.21. Range/Multirange Functions and Operators](functions-range.md) - [9.22. Aggregate Functions](functions-aggregate.md) - [9.23. Window Functions](functions-window.md) - [9.24. Merge Support Functions](functions-merge-support.md) - [9.25. Subquery Expressions](functions-subquery.md) - [9.25.1. `EXISTS`](functions-subquery.md#functions-subquery-exists) - [9.25.2. `IN`](functions-subquery.md#functions-subquery-in) - [9.25.3. `NOT IN`](functions-subquery.md#functions-subquery-notin) - [9.25.4. `ANY`/`SOME`](functions-subquery.md#functions-subquery-any-some) - [9.25.5. `ALL`](functions-subquery.md#functions-subquery-all) - [9.25.6. Single-Row Comparison](functions-subquery.md#functions-subquery-single-row-comp) - [9.26. Row and Array Comparisons](functions-comparisons.md) - [9.26.1. `IN`](functions-comparisons.md#functions-comparisons-in-scalar) - [9.26.2. `NOT IN`](functions-comparisons.md#functions-comparisons-not-in) - [9.26.3. `ANY`/`SOME` (array)](functions-comparisons.md#functions-comparisons-any-some) - [9.26.4. `ALL` (array)](functions-comparisons.md#functions-comparisons-all) - [9.26.5. Row Constructor Comparison](functions-comparisons.md#row-wise-comparison) - [9.26.6. Composite Type Comparison](functions-comparisons.md#composite-type-comparison) - [9.27. Set Returning Functions](functions-srf.md) - [9.28. System Information Functions and Operators](functions-info.md) - [9.28.1. Session Information Functions](functions-info.md#functions-info-session) - [9.28.2. Access Privilege Inquiry Functions](functions-info.md#functions-info-access) - [9.28.3. Schema Visibility Inquiry Functions](functions-info.md#functions-info-schema) - [9.28.4. System Catalog Information Functions](functions-info.md#functions-info-catalog) - [9.28.5. Object Information and Addressing Functions](functions-info.md#functions-info-object) - [9.28.6. Comment Information Functions](functions-info.md#functions-info-comment) - [9.28.7. Data Validity Checking Functions](functions-info.md#functions-info-validity) - [9.28.8. Transaction ID and Snapshot Information Functions](functions-info.md#functions-info-snapshot) - [9.28.9. Committed Transaction Information Functions](functions-info.md#functions-info-commit-timestamp) - [9.28.10. Control Data Functions](functions-info.md#functions-info-controldata) - [9.28.11. Version Information Functions](functions-info.md#functions-info-version) - [9.28.12. WAL Summarization Information Functions](functions-info.md#functions-info-wal-summary) - [9.28.13. Get Object DDL Functions](functions-info.md#functions-get-object-ddl) - [9.29. System Administration Functions](functions-admin.md) - [9.29.1. Configuration Settings Functions](functions-admin.md#functions-admin-set) - [9.29.2. Server Signaling Functions](functions-admin.md#functions-admin-signal) - [9.29.3. Backup Control Functions](functions-admin.md#functions-admin-backup) - [9.29.4. Recovery Control Functions](functions-admin.md#functions-recovery-control) - [9.29.5. Snapshot Synchronization Functions](functions-admin.md#functions-snapshot-synchronization) - [9.29.6. Replication Management Functions](functions-admin.md#functions-replication) - [9.29.7. Database Object Management Functions](functions-admin.md#functions-admin-dbobject) - [9.29.8. Index Maintenance Functions](functions-admin.md#functions-admin-index) - [9.29.9. Generic File Access Functions](functions-admin.md#functions-admin-genfile) - [9.29.10. Advisory Lock Functions](functions-admin.md#functions-advisory-locks) - [9.29.11. Data Checksum Functions](functions-admin.md#functions-admin-checksum) - [9.30. Trigger Functions](functions-trigger.md) - [9.31. Event Trigger Functions](functions-event-triggers.md) - [9.31.1. Capturing Changes at Command End](functions-event-triggers.md#pg-event-trigger-ddl-command-end-functions) - [9.31.2. Processing Objects Dropped by a DDL Command](functions-event-triggers.md#pg-event-trigger-sql-drop-functions) - [9.31.3. Handling a Table Rewrite Event](functions-event-triggers.md#pg-event-trigger-table-rewrite-functions) - [9.32. Statistics Information Functions](functions-statistics.md) - [9.32.1. Inspecting MCV Lists](functions-statistics.md#functions-statistics-mcv) - [10. Type Conversion](typeconv.md) - [10.1. Overview](typeconv-overview.md) - [10.2. Operators](typeconv-oper.md) - [10.3. Functions](typeconv-func.md) - [10.4. Value Storage](typeconv-query.md) - [10.5. `UNION`, `CASE`, and Related Constructs](typeconv-union-case.md) - [10.6. `SELECT` Output Columns](typeconv-select.md) - [11. Indexes](indexes.md) - [11.1. Introduction](indexes-intro.md) - [11.2. Index Types](indexes-types.md) - [11.2.1. B-Tree](indexes-types.md#indexes-types-btree) - [11.2.2. Hash](indexes-types.md#indexes-types-hash) - [11.2.3. GiST](indexes-types.md#indexes-type-gist) - [11.2.4. SP-GiST](indexes-types.md#indexes-type-spgist) - [11.2.5. GIN](indexes-types.md#indexes-types-gin) - [11.2.6. BRIN](indexes-types.md#indexes-types-brin) - [11.3. Multicolumn Indexes](indexes-multicolumn.md) - [11.4. Indexes and `ORDER BY`](indexes-ordering.md) - [11.5. Combining Multiple Indexes](indexes-bitmap-scans.md) - [11.6. Unique Indexes](indexes-unique.md) - [11.7. Indexes on Expressions](indexes-expressional.md) - [11.8. Partial Indexes](indexes-partial.md) - [11.9. Index-Only Scans and Covering Indexes](indexes-index-only-scans.md) - [11.10. Operator Classes and Operator Families](indexes-opclass.md) - [11.11. Indexes and Collations](indexes-collations.md) - [11.12. Examining Index Usage](indexes-examine.md) - [12. Full Text Search](textsearch.md) - [12.1. Introduction](textsearch-intro.md) - [12.1.1. What Is a Document?](textsearch-intro.md#textsearch-document) - [12.1.2. Basic Text Matching](textsearch-intro.md#textsearch-matching) - [12.1.3. Configurations](textsearch-intro.md#textsearch-intro-configurations) - [12.2. Tables and Indexes](textsearch-tables.md) - [12.2.1. Searching a Table](textsearch-tables.md#textsearch-tables-search) - [12.2.2. Creating Indexes](textsearch-tables.md#textsearch-tables-index) - [12.3. Controlling Text Search](textsearch-controls.md) - [12.3.1. Parsing Documents](textsearch-controls.md#textsearch-parsing-documents) - [12.3.2. Parsing Queries](textsearch-controls.md#textsearch-parsing-queries) - [12.3.3. Ranking Search Results](textsearch-controls.md#textsearch-ranking) - [12.3.4. Highlighting Results](textsearch-controls.md#textsearch-headline) - [12.4. Additional Features](textsearch-features.md) - [12.4.1. Manipulating Documents](textsearch-features.md#textsearch-manipulate-tsvector) - [12.4.2. Manipulating Queries](textsearch-features.md#textsearch-manipulate-tsquery) - [12.4.3. Triggers for Automatic Updates](textsearch-features.md#textsearch-update-triggers) - [12.4.4. Gathering Document Statistics](textsearch-features.md#textsearch-statistics) - [12.5. Parsers](textsearch-parsers.md) - [12.6. Dictionaries](textsearch-dictionaries.md) - [12.6.1. Stop Words](textsearch-dictionaries.md#textsearch-stopwords) - [12.6.2. Simple Dictionary](textsearch-dictionaries.md#textsearch-simple-dictionary) - [12.6.3. Synonym Dictionary](textsearch-dictionaries.md#textsearch-synonym-dictionary) - [12.6.4. Thesaurus Dictionary](textsearch-dictionaries.md#textsearch-thesaurus) - [12.6.5. Ispell Dictionary](textsearch-dictionaries.md#textsearch-ispell-dictionary) - [12.6.6. Snowball Dictionary](textsearch-dictionaries.md#textsearch-snowball-dictionary) - [12.7. Configuration Example](textsearch-configuration.md) - [12.8. Testing and Debugging Text Search](textsearch-debugging.md) - [12.8.1. Configuration Testing](textsearch-debugging.md#textsearch-configuration-testing) - [12.8.2. Parser Testing](textsearch-debugging.md#textsearch-parser-testing) - [12.8.3. Dictionary Testing](textsearch-debugging.md#textsearch-dictionary-testing) - [12.9. Preferred Index Types for Text Search](textsearch-indexes.md) - [12.10. psql Support](textsearch-psql.md) - [12.11. Limitations](textsearch-limitations.md) - [13. Concurrency Control](mvcc.md) - [13.1. Introduction](mvcc-intro.md) - [13.2. Transaction Isolation](transaction-iso.md) - [13.2.1. Read Committed Isolation Level](transaction-iso.md#xact-read-committed) - [13.2.2. Repeatable Read Isolation Level](transaction-iso.md#xact-repeatable-read) - [13.2.3. Serializable Isolation Level](transaction-iso.md#xact-serializable) - [13.3. Explicit Locking](explicit-locking.md) - [13.3.1. Table-Level Locks](explicit-locking.md#locking-tables) - [13.3.2. Row-Level Locks](explicit-locking.md#locking-rows) - [13.3.3. Page-Level Locks](explicit-locking.md#locking-pages) - [13.3.4. Deadlocks](explicit-locking.md#locking-deadlocks) - [13.3.5. Advisory Locks](explicit-locking.md#advisory-locks) - [13.4. Data Consistency Checks at the Application Level](applevel-consistency.md) - [13.4.1. Enforcing Consistency with Serializable Transactions](applevel-consistency.md#serializable-consistency) - [13.4.2. Enforcing Consistency with Explicit Blocking Locks](applevel-consistency.md#non-serializable-consistency) - [13.5. Serialization Failure Handling](mvcc-serialization-failure-handling.md) - [13.6. Caveats](mvcc-caveats.md) - [13.7. Locking and Indexes](locking-indexes.md) - [14. Performance Tips](performance-tips.md) - [14.1. Using `EXPLAIN`](using-explain.md) - [14.1.1. `EXPLAIN` Basics](using-explain.md#using-explain-basics) - [14.1.2. `EXPLAIN ANALYZE`](using-explain.md#using-explain-analyze) - [14.1.3. Caveats](using-explain.md#using-explain-caveats) - [14.2. Statistics Used by the Planner](planner-stats.md) - [14.2.1. Single-Column Statistics](planner-stats.md#planner-stats-single-column) - [14.2.2. Extended Statistics](planner-stats.md#planner-stats-extended) - [14.3. Controlling the Planner with Explicit `JOIN` Clauses](explicit-joins.md) - [14.4. Populating a Database](populate.md) - [14.4.1. Disable Autocommit](populate.md#disable-autocommit) - [14.4.2. Use `COPY`](populate.md#populate-copy-from) - [14.4.3. Remove Indexes](populate.md#populate-rm-indexes) - [14.4.4. Remove Foreign Key Constraints](populate.md#populate-rm-fkeys) - [14.4.5. Increase `maintenance_work_mem`](populate.md#populate-work-mem) - [14.4.6. Increase `max_wal_size`](populate.md#populate-max-wal-size) - [14.4.7. Disable WAL Archival and Streaming Replication](populate.md#populate-pitr) - [14.4.8. Run `ANALYZE` Afterwards](populate.md#populate-analyze) - [14.4.9. Some Notes about pg_dump](populate.md#populate-pg-dump) - [14.5. Non-Durable Settings](non-durability.md) - [15. Parallel Query](parallel-query.md) - [15.1. How Parallel Query Works](how-parallel-query-works.md) - [15.2. When Can Parallel Query Be Used?](when-can-parallel-query-be-used.md) - [15.3. Parallel Plans](parallel-plans.md) - [15.3.1. Parallel Scans](parallel-plans.md#parallel-scans) - [15.3.2. Parallel Joins](parallel-plans.md#parallel-joins) - [15.3.3. Parallel Aggregation](parallel-plans.md#parallel-aggregation) - [15.3.4. Parallel Append](parallel-plans.md#parallel-append) - [15.3.5. Parallel Plan Tips](parallel-plans.md#parallel-plan-tips) - [15.4. Parallel Safety](parallel-safety.md) - [15.4.1. Parallel Labeling for Functions and Aggregates](parallel-safety.md#parallel-labeling)