PostgreSQL-แƒจแƒ˜ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒแƒฎแƒแƒกแƒ˜แƒแƒ—แƒ”แƒ‘แƒšแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ

PostgreSQL-แƒจแƒ˜ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒแƒฎแƒแƒกแƒ˜แƒแƒ—แƒ”แƒ‘แƒšแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ
Postgres-แƒ˜แƒก แƒกแƒแƒ›แƒงแƒแƒ แƒแƒจแƒ˜ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜ แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒกแƒแƒชแƒแƒ•แƒจแƒ˜ แƒ”แƒคแƒ”แƒฅแƒขแƒฃแƒ แƒ˜ แƒœแƒแƒ•แƒ˜แƒ’แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก (แƒ”.แƒฌ. "แƒ’แƒ แƒแƒ•แƒ"). Postgres แƒแƒ  แƒฃแƒญแƒ”แƒ แƒก แƒ›แƒฎแƒแƒ แƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒแƒก แƒ“แƒ MVCC แƒแƒ แƒฅแƒ˜แƒขแƒ”แƒฅแƒขแƒฃแƒ แƒ แƒ˜แƒฌแƒ•แƒ”แƒ•แƒก แƒ—แƒฅแƒ•แƒ”แƒœ แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒก แƒ”แƒ แƒ—แƒ˜ แƒ“แƒ แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒขแƒฃแƒžแƒšแƒ˜แƒก แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒ—. แƒแƒ›แƒ˜แƒขแƒแƒ›, แƒซแƒแƒšแƒ˜แƒแƒœ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜แƒ, แƒ แƒแƒ› แƒจแƒ”แƒซแƒšแƒแƒ— แƒ”แƒคแƒ”แƒฅแƒขแƒฃแƒ แƒ˜ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ แƒ“แƒ แƒจแƒ”แƒœแƒแƒ แƒฉแƒฃแƒœแƒ”แƒ‘แƒ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒกแƒแƒญแƒ”แƒ แƒแƒ“.

แƒแƒฅ แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜แƒ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ แƒฉแƒ”แƒ•แƒ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜แƒก แƒแƒžแƒขแƒ˜แƒ›แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒกแƒ แƒ“แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒกแƒแƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒ”แƒ‘แƒšแƒแƒ“.

แƒจแƒ”แƒœแƒ˜แƒจแƒ•แƒœแƒ: แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒœแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒจแƒ”แƒฃแƒชแƒ•แƒšแƒ”แƒšแƒแƒ“ pagila แƒœแƒ˜แƒ›แƒฃแƒจแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ.

แƒ“แƒแƒคแƒแƒ แƒ•แƒ˜แƒก แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ

แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฎแƒ”แƒ“แƒแƒ— แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒก แƒ”แƒš.แƒคแƒแƒกแƒขแƒ˜แƒก แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ˜แƒก แƒแƒ›แƒแƒฆแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒแƒ แƒแƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ›แƒแƒ’แƒ˜แƒ“แƒ customer แƒแƒ แƒ˜แƒก แƒกแƒ•แƒ”แƒขแƒ˜ activeแƒ“แƒ แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ:

pagila=# EXPLAIN SELECT email FROM customer WHERE active=0;
                        QUERY PLAN
-----------------------------------------------------------
 Seq Scan on customer  (cost=0.00..16.49 rows=15 width=32)
   Filter: (active = 0)
(2 rows)

แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒ˜แƒฌแƒ•แƒ”แƒ•แƒก แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒก แƒกแƒ™แƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒ แƒฃแƒš แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒแƒ‘แƒแƒก customer. แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒแƒ— แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜ แƒกแƒ•แƒ”แƒขแƒ–แƒ” active:

pagila=# CREATE INDEX idx_cust1 ON customer(active);
CREATE INDEX
pagila=# EXPLAIN SELECT email FROM customer WHERE active=0;
                                 QUERY PLAN
-----------------------------------------------------------------------------
 Index Scan using idx_cust1 on customer  (cost=0.28..12.29 rows=15 width=32)
   Index Cond: (active = 0)
(2 rows)

แƒ“แƒแƒ”แƒฎแƒ›แƒแƒ แƒ, แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ›แƒ˜ แƒกแƒ™แƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒ แƒ’แƒแƒ“แƒแƒ˜แƒฅแƒชแƒ "index scan". แƒ”แƒก แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก, แƒ แƒแƒ› Postgres แƒ“แƒแƒแƒกแƒ™แƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒก แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒก.idx_cust1แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ’แƒแƒœแƒแƒ’แƒ แƒซแƒ”แƒ— แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒก แƒ’แƒ แƒแƒ•แƒ˜แƒก แƒซแƒ”แƒ‘แƒœแƒ แƒกแƒฎแƒ•แƒ แƒกแƒ•แƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒฌแƒแƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒแƒ“ (แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒกแƒ•แƒ”แƒขแƒ˜ email) แƒ แƒแƒช แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒก แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ.

แƒ“แƒแƒคแƒแƒ แƒ•แƒ˜แƒก แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜ แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ˜แƒšแƒ˜แƒ PostgreSQL 11-แƒจแƒ˜. แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒจแƒ”แƒ˜แƒขแƒแƒœแƒแƒ— แƒ”แƒ แƒ—แƒ˜ แƒแƒœ แƒ›แƒ”แƒขแƒ˜ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒกแƒ•แƒ”แƒขแƒ˜ แƒ—แƒแƒ•แƒแƒ“ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒจแƒ˜ - แƒ›แƒแƒ—แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜ แƒ˜แƒœแƒแƒฎแƒ”แƒ‘แƒ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ›แƒแƒฆแƒแƒ–แƒ˜แƒแƒจแƒ˜.

แƒ—แƒฃ แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ“แƒ˜แƒ— แƒแƒ› แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒ— แƒ“แƒ แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ“แƒ˜แƒ— แƒ”แƒš.แƒคแƒแƒกแƒขแƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒแƒก แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒจแƒ˜, แƒ›แƒแƒจแƒ˜แƒœ Postgres-แƒก แƒแƒ  แƒ“แƒแƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ“แƒ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ˜แƒก แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒก แƒ’แƒ แƒแƒ•แƒ˜แƒก แƒซแƒ˜แƒ”แƒ‘แƒ. email. แƒ•แƒœแƒแƒฎแƒแƒ—, แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก แƒ—แƒฃ แƒแƒ แƒ แƒ”แƒก:

pagila=# CREATE INDEX idx_cust2 ON customer(active) INCLUDE (email);
CREATE INDEX
pagila=# EXPLAIN SELECT email FROM customer WHERE active=0;
                                    QUERY PLAN
----------------------------------------------------------------------------------
 Index Only Scan using idx_cust2 on customer  (cost=0.28..12.29 rows=15 width=32)
   Index Cond: (active = 0)
(2 rows)

ยซIndex Only Scanแƒ’แƒ•แƒ”แƒฃแƒ‘แƒœแƒ”แƒ‘แƒ, แƒ แƒแƒ› แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒก แƒแƒฎแƒšแƒ แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒแƒ’แƒ”แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒแƒ— แƒ—แƒแƒ•แƒ˜แƒ“แƒแƒœ แƒแƒ˜แƒชแƒ˜แƒšแƒแƒ— แƒงแƒ•แƒ”แƒšแƒ แƒ“แƒ˜แƒกแƒ™แƒ˜ I/O แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒก แƒ’แƒ แƒแƒ•แƒ˜แƒก แƒฌแƒแƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒแƒ“.

แƒ“แƒแƒคแƒแƒ แƒ•แƒ˜แƒก แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜ แƒแƒ›แƒŸแƒแƒ›แƒแƒ“ แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ B- แƒฎแƒ”แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ—แƒฃแƒ›แƒชแƒ, แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒจแƒ”แƒœแƒแƒ แƒฉแƒฃแƒœแƒ”แƒ‘แƒ˜แƒก แƒซแƒแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ แƒฃแƒคแƒ แƒ แƒ›แƒแƒฆแƒแƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ.

แƒœแƒแƒฌแƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ

แƒœแƒแƒฌแƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜แƒ แƒ”แƒ‘แƒ แƒฎแƒ“แƒ”แƒ‘แƒ แƒชแƒฎแƒ แƒ˜แƒšแƒ˜แƒก แƒ›แƒฌแƒ™แƒ แƒ˜แƒ•แƒ”แƒ‘แƒ˜แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒฅแƒ•แƒ”แƒฏแƒ’แƒฃแƒคแƒ–แƒ”. แƒ”แƒก แƒ“แƒแƒ–แƒแƒ’แƒแƒ•แƒก แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜แƒก แƒ–แƒแƒ›แƒแƒก แƒ“แƒ แƒแƒฉแƒฅแƒแƒ แƒ”แƒ‘แƒก แƒกแƒ™แƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒแƒก.

แƒ•แƒ—แƒฅแƒ•แƒแƒ—, แƒ’แƒ•แƒ˜แƒœแƒ“แƒ แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒแƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒ”แƒšแƒคแƒแƒกแƒขแƒ˜แƒก แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ แƒ™แƒแƒšแƒ˜แƒคแƒแƒ แƒœแƒ˜แƒแƒจแƒ˜. แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒแƒกแƒ”แƒ—แƒ˜:

SELECT c.email FROM customer c
JOIN address a ON c.address_id = a.address_id
WHERE a.district = 'California';
which has a query plan that involves scanning both the tables that are joined:
pagila=# EXPLAIN SELECT c.email FROM customer c
pagila-# JOIN address a ON c.address_id = a.address_id
pagila-# WHERE a.district = 'California';
                              QUERY PLAN
----------------------------------------------------------------------
 Hash Join  (cost=15.65..32.22 rows=9 width=32)
   Hash Cond: (c.address_id = a.address_id)
   ->  Seq Scan on customer c  (cost=0.00..14.99 rows=599 width=34)
   ->  Hash  (cost=15.54..15.54 rows=9 width=4)
         ->  Seq Scan on address a  (cost=0.00..15.54 rows=9 width=4)
               Filter: (district = 'California'::text)
(6 rows)

แƒ แƒแƒก แƒ›แƒแƒ’แƒ•แƒชแƒ”แƒ›แƒก แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜:

pagila=# CREATE INDEX idx_address1 ON address(district);
CREATE INDEX
pagila=# EXPLAIN SELECT c.email FROM customer c
pagila-# JOIN address a ON c.address_id = a.address_id
pagila-# WHERE a.district = 'California';
                                      QUERY PLAN
---------------------------------------------------------------------------------------
 Hash Join  (cost=12.98..29.55 rows=9 width=32)
   Hash Cond: (c.address_id = a.address_id)
   ->  Seq Scan on customer c  (cost=0.00..14.99 rows=599 width=34)
   ->  Hash  (cost=12.87..12.87 rows=9 width=4)
         ->  Bitmap Heap Scan on address a  (cost=4.34..12.87 rows=9 width=4)
               Recheck Cond: (district = 'California'::text)
               ->  Bitmap Index Scan on idx_address1  (cost=0.00..4.34 rows=9 width=0)
                     Index Cond: (district = 'California'::text)
(8 rows)

แƒกแƒ™แƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒ address แƒจแƒ”แƒ˜แƒชแƒ•แƒแƒšแƒ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜แƒก แƒกแƒ™แƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒ— idx_address1แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ“แƒแƒแƒกแƒ™แƒแƒœแƒ˜แƒ แƒ แƒ’แƒ แƒแƒ•แƒ address.

แƒ•แƒ˜แƒœแƒแƒ˜แƒ“แƒแƒœ แƒ”แƒก แƒแƒ แƒ˜แƒก แƒฎแƒจแƒ˜แƒ แƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ แƒ“แƒ แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒก แƒแƒžแƒขแƒ˜แƒ›แƒ˜แƒ–แƒแƒชแƒ˜แƒแƒก, แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— แƒœแƒแƒฌแƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ˜แƒ› แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ”แƒ‘แƒก แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒจแƒ˜แƒช แƒฃแƒ‘แƒแƒœแƒ˜ โ€˜Californiaโ€™:

pagila=# CREATE INDEX idx_address2 ON address(address_id) WHERE district='California';
CREATE INDEX
pagila=# EXPLAIN SELECT c.email FROM customer c
pagila-# JOIN address a ON c.address_id = a.address_id
pagila-# WHERE a.district = 'California';
                                           QUERY PLAN
------------------------------------------------------------------------------------------------
 Hash Join  (cost=12.38..28.96 rows=9 width=32)
   Hash Cond: (c.address_id = a.address_id)
   ->  Seq Scan on customer c  (cost=0.00..14.99 rows=599 width=34)
   ->  Hash  (cost=12.27..12.27 rows=9 width=4)
         ->  Index Only Scan using idx_address2 on address a  (cost=0.14..12.27 rows=9 width=4)
(5 rows)

แƒแƒฎแƒšแƒ แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ˜แƒ™แƒ˜แƒ—แƒฎแƒ”แƒ‘แƒ idx_address2 แƒ“แƒ แƒแƒ  แƒ”แƒฎแƒ”แƒ‘แƒ แƒ›แƒแƒ’แƒ˜แƒ“แƒแƒก address.

แƒ›แƒ แƒแƒ•แƒแƒšแƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ

แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ แƒกแƒ•แƒ”แƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜, แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒแƒ  แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒ“แƒ”แƒก แƒกแƒ™แƒแƒšแƒแƒ แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒขแƒ˜แƒžแƒก. แƒกแƒ•แƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒขแƒ˜แƒžแƒ”แƒ‘แƒ˜, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ jsonb, arrays ะธ tsvector แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒ™แƒแƒ›แƒžแƒแƒ–แƒ˜แƒขแƒฃแƒ  แƒแƒœ แƒ›แƒ แƒแƒ•แƒแƒšแƒ แƒ˜แƒชแƒฎแƒแƒ•แƒแƒœ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒแƒก. แƒ—แƒฃ แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒแƒกแƒ”แƒ—แƒ˜ แƒกแƒ•แƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜แƒ แƒ”แƒ‘แƒ, แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒฃแƒœแƒ“แƒ แƒ›แƒแƒซแƒ”แƒ‘แƒœแƒแƒ— แƒแƒ› แƒกแƒ•แƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ˜แƒœแƒ“แƒ˜แƒ•แƒ˜แƒ“แƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ.

แƒจแƒ”แƒ•แƒ”แƒชแƒแƒ“แƒแƒ— แƒ•แƒ˜แƒžแƒแƒ•แƒแƒ— แƒงแƒ•แƒ”แƒšแƒ แƒคแƒ˜แƒšแƒ›แƒ˜แƒก แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒฌแƒแƒ แƒฃแƒ›แƒแƒขแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ’แƒแƒ“แƒแƒฆแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒญแƒ แƒ˜แƒšแƒ”แƒ‘แƒก. แƒ›แƒแƒ’แƒ˜แƒ“แƒ film แƒแƒ แƒ˜แƒก แƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒก แƒกแƒ•แƒ”แƒขแƒ˜ แƒ”.แƒฌ special_features. แƒ—แƒฃ แƒคแƒ˜แƒšแƒ›แƒก แƒแƒฅแƒ•แƒก แƒ”แƒก โ€žแƒกแƒžแƒ”แƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒ—แƒ•แƒ˜แƒกแƒ”แƒ‘แƒโ€œ, แƒ›แƒแƒจแƒ˜แƒœ แƒกแƒ•แƒ”แƒขแƒ˜ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒก แƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒก แƒ›แƒแƒกแƒ˜แƒ•แƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ— Behind The Scenes. แƒงแƒ•แƒ”แƒšแƒ แƒแƒกแƒ”แƒ—แƒ˜ แƒคแƒ˜แƒšแƒ›แƒ˜แƒก แƒ›แƒแƒกแƒแƒซแƒ”แƒ‘แƒœแƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒแƒ•แƒ˜แƒ แƒฉแƒ˜แƒแƒ— แƒงแƒ•แƒ”แƒšแƒ แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ˜ โ€žแƒกแƒชแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฆแƒ›แƒโ€œ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒ›แƒแƒกแƒ˜แƒ•แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜ special_features:

SELECT title FROM film WHERE special_features @> '{"Behind The Scenes"}';

แƒ›แƒแƒ‘แƒฃแƒ“แƒแƒ แƒ˜ แƒแƒžแƒ”แƒ แƒแƒขแƒแƒ แƒ˜ @> แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒก แƒแƒ แƒ˜แƒก แƒ—แƒฃ แƒแƒ แƒ แƒ›แƒแƒ แƒฏแƒ•แƒ”แƒœแƒ แƒ›แƒฎแƒแƒ แƒ” แƒ›แƒแƒ แƒชแƒฎแƒ”แƒœแƒ แƒ›แƒฎแƒแƒ แƒ˜แƒก แƒฅแƒ•แƒ”แƒกแƒ˜แƒ›แƒ แƒแƒ•แƒšแƒ”.

แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒ”แƒ— แƒ’แƒ”แƒ’แƒ›แƒ:

pagila=# EXPLAIN SELECT title FROM film
pagila-# WHERE special_features @> '{"Behind The Scenes"}';
                           QUERY PLAN
-----------------------------------------------------------------
 Seq Scan on film  (cost=0.00..67.50 rows=5 width=15)
   Filter: (special_features @> '{"Behind The Scenes"}'::text[])
(2 rows)

แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ˜แƒ—แƒฎแƒแƒ•แƒก แƒกแƒ แƒฃแƒšแƒ˜ แƒ’แƒ แƒแƒ•แƒ˜แƒก แƒกแƒ™แƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒแƒก 67 แƒฆแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ˜แƒ—.

แƒ•แƒœแƒแƒฎแƒแƒ—, แƒ’แƒ•แƒ”แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ แƒ—แƒฃ แƒแƒ แƒ แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜ B-แƒฎแƒ˜แƒก แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜:

pagila=# CREATE INDEX idx_film1 ON film(special_features);
CREATE INDEX
pagila=# EXPLAIN SELECT title FROM film
pagila-# WHERE special_features @> '{"Behind The Scenes"}';
                           QUERY PLAN
-----------------------------------------------------------------
 Seq Scan on film  (cost=0.00..67.50 rows=5 width=15)
   Filter: (special_features @> '{"Behind The Scenes"}'::text[])
(2 rows)

แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜ แƒแƒ แƒช แƒ™แƒ˜ แƒ’แƒแƒœแƒ˜แƒฎแƒ˜แƒšแƒ”แƒ‘แƒแƒ“แƒ. B-แƒฎแƒ˜แƒก แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ›แƒ แƒแƒ  แƒ˜แƒชแƒ˜แƒก แƒชแƒแƒšแƒ™แƒ”แƒฃแƒšแƒ˜ แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜แƒ แƒ”แƒ‘แƒฃแƒš แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒจแƒ˜.

แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ GIN แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜.

pagila=# CREATE INDEX idx_film2 ON film USING GIN(special_features);
CREATE INDEX
pagila=# EXPLAIN SELECT title FROM film
pagila-# WHERE special_features @> '{"Behind The Scenes"}';
                                QUERY PLAN
---------------------------------------------------------------------------
 Bitmap Heap Scan on film  (cost=8.04..23.58 rows=5 width=15)
   Recheck Cond: (special_features @> '{"Behind The Scenes"}'::text[])
   ->  Bitmap Index Scan on idx_film2  (cost=0.00..8.04 rows=5 width=0)
         Index Cond: (special_features @> '{"Behind The Scenes"}'::text[])
(4 rows)

GIN แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜ แƒ›แƒฎแƒแƒ แƒก แƒฃแƒญแƒ”แƒ แƒก แƒชแƒแƒšแƒ™แƒ”แƒฃแƒšแƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ“แƒแƒ แƒ”แƒ‘แƒแƒก แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ™แƒแƒ›แƒžแƒแƒ–แƒ˜แƒชแƒ˜แƒฃแƒ แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒฌแƒ˜แƒœแƒแƒแƒฆแƒ›แƒ“แƒ”แƒ’, แƒ แƒแƒช แƒ˜แƒฌแƒ•แƒ”แƒ•แƒก แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒ’แƒ”แƒ’แƒ›แƒ˜แƒก แƒฆแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒœแƒแƒฎแƒ”แƒ•แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ.

แƒ“แƒฃแƒ‘แƒšแƒ˜แƒ™แƒแƒขแƒ˜ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒจแƒแƒ แƒ”แƒ‘แƒ

แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒแƒ—แƒ แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜ แƒ’แƒ แƒแƒ•แƒ“แƒ”แƒ‘แƒ แƒ“แƒ แƒ–แƒแƒ’แƒฏแƒ”แƒ  แƒแƒฎแƒแƒšแƒ˜ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒ“แƒ”แƒก แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒ’แƒแƒœแƒ›แƒแƒ แƒขแƒ”แƒ‘แƒแƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒฌแƒ˜แƒœแƒ. แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ™แƒแƒขแƒแƒšแƒแƒ’แƒ˜แƒก แƒฎแƒ”แƒ“แƒ˜, แƒ แƒแƒ—แƒ แƒ›แƒ˜แƒ˜แƒฆแƒแƒ— แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜แƒก SQL แƒ’แƒแƒœแƒ›แƒแƒ แƒขแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒแƒ“แƒแƒ›แƒ˜แƒแƒœแƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒฌแƒแƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒแƒ“. pg_indexes. แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒแƒ“ แƒ˜แƒžแƒแƒ•แƒแƒ— แƒ˜แƒ“แƒ”แƒœแƒขแƒฃแƒ แƒ˜ แƒ’แƒแƒœแƒ›แƒแƒ แƒขแƒ”แƒ‘แƒ”แƒ‘แƒ˜:

 SELECT array_agg(indexname) AS indexes, replace(indexdef, indexname, '') AS defn
    FROM pg_indexes
GROUP BY defn
  HAVING count(*) > 1;
And hereโ€™s the result when run on the stock pagila database:
pagila=#   SELECT array_agg(indexname) AS indexes, replace(indexdef, indexname, '') AS defn
pagila-#     FROM pg_indexes
pagila-# GROUP BY defn
pagila-#   HAVING count(*) > 1;
                                indexes                                 |                                defn
------------------------------------------------------------------------+------------------------------------------------------------------
 {payment_p2017_01_customer_id_idx,idx_fk_payment_p2017_01_customer_id} | CREATE INDEX  ON public.payment_p2017_01 USING btree (customer_id
 {payment_p2017_02_customer_id_idx,idx_fk_payment_p2017_02_customer_id} | CREATE INDEX  ON public.payment_p2017_02 USING btree (customer_id
 {payment_p2017_03_customer_id_idx,idx_fk_payment_p2017_03_customer_id} | CREATE INDEX  ON public.payment_p2017_03 USING btree (customer_id
 {idx_fk_payment_p2017_04_customer_id,payment_p2017_04_customer_id_idx} | CREATE INDEX  ON public.payment_p2017_04 USING btree (customer_id
 {payment_p2017_05_customer_id_idx,idx_fk_payment_p2017_05_customer_id} | CREATE INDEX  ON public.payment_p2017_05 USING btree (customer_id
 {idx_fk_payment_p2017_06_customer_id,payment_p2017_06_customer_id_idx} | CREATE INDEX  ON public.payment_p2017_06 USING btree (customer_id
(6 rows)

แƒกแƒฃแƒžแƒ”แƒ แƒกแƒ”แƒขแƒ˜แƒก แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜

แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ›แƒแƒฎแƒ“แƒ”แƒก, แƒ แƒแƒ› แƒ“แƒแƒกแƒ แƒฃแƒšแƒ“แƒ”แƒก แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ—แƒแƒ’แƒแƒœ แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒก แƒกแƒ•แƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒกแƒฃแƒžแƒ”แƒ แƒฏแƒ’แƒฃแƒคแƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒก แƒกแƒฎแƒ•แƒ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒก. แƒ”แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒแƒก แƒแƒœ แƒแƒ  แƒ˜แƒงแƒแƒก แƒกแƒแƒกแƒฃแƒ แƒ•แƒ”แƒšแƒ˜ - แƒกแƒฃแƒžแƒ”แƒ แƒ™แƒแƒ›แƒžแƒšแƒ”แƒฅแƒขแƒ›แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒ˜แƒฌแƒ•แƒ˜แƒแƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜แƒก แƒกแƒ™แƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒ, แƒ แƒแƒช แƒ™แƒแƒ แƒ’แƒ˜แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒแƒœ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ“แƒแƒ˜แƒ™แƒแƒ•แƒแƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒ“แƒ˜แƒ“แƒ˜ แƒแƒ“แƒ’แƒ˜แƒšแƒ˜, แƒแƒœ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒแƒžแƒขแƒ˜แƒ›แƒ˜แƒ–แƒแƒชแƒ˜แƒแƒช แƒ˜แƒงแƒ แƒ’แƒแƒ›แƒ˜แƒ–แƒœแƒฃแƒšแƒ˜, แƒแƒฆแƒแƒ  แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜.

แƒ—แƒฃ แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒแƒกแƒ”แƒ—แƒ˜ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ แƒขแƒ”แƒ‘แƒ˜แƒก แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒ˜แƒ–แƒแƒชแƒ˜แƒ, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒ˜แƒฌแƒงแƒแƒ— pg_index แƒ›แƒแƒ’แƒ˜แƒ“แƒ˜แƒ“แƒแƒœ pg_catalog.

แƒ’แƒแƒ›แƒแƒฃแƒงแƒ”แƒœแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜

แƒ แƒแƒ’แƒแƒ แƒช แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ”แƒœ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ”แƒ‘แƒก, แƒ•แƒ˜แƒ—แƒแƒ แƒ“แƒ”แƒ‘แƒ แƒ›แƒแƒ— แƒ›แƒ˜แƒ”แƒ  แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜. แƒแƒ“แƒ แƒ” แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜ แƒแƒฆแƒแƒ  แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒ—. แƒงแƒแƒ•แƒ”แƒš แƒฏแƒ”แƒ แƒ–แƒ”, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜ แƒกแƒ™แƒแƒœแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ, แƒ˜แƒก แƒแƒฆแƒ˜แƒœแƒ˜แƒจแƒœแƒ”แƒ‘แƒ แƒกแƒขแƒแƒขแƒ˜แƒกแƒขแƒ˜แƒ™แƒ˜แƒก แƒ›แƒ”แƒœแƒ”แƒฏแƒ”แƒ แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒ“แƒ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ™แƒแƒขแƒแƒšแƒแƒ’แƒ˜แƒก แƒฎแƒ”แƒ“แƒจแƒ˜ pg_stat_user_indexes แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒœแƒแƒฎแƒแƒ— แƒฆแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ idx_scan, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ แƒ˜แƒก แƒ™แƒฃแƒ›แƒฃแƒšแƒแƒชแƒ˜แƒฃแƒ แƒ˜ แƒ›แƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒšแƒ˜. แƒแƒ› แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ˜แƒก แƒ—แƒ•แƒแƒšแƒงแƒฃแƒ แƒ˜แƒก แƒ“แƒ”แƒ•แƒœแƒ”แƒ‘แƒ แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒžแƒ”แƒ แƒ˜แƒแƒ“แƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜ (แƒ•แƒ—แƒฅแƒ•แƒแƒ— แƒ”แƒ แƒ—แƒ˜ แƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜) แƒ›แƒแƒ’แƒชแƒ”แƒ›แƒ— แƒ™แƒแƒ แƒ’ แƒฌแƒแƒ แƒ›แƒแƒ“แƒ’แƒ”แƒœแƒแƒก แƒ˜แƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ—แƒฃ แƒ แƒแƒ›แƒ”แƒšแƒ˜ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜ แƒแƒ  แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ“แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒฉแƒแƒ›แƒแƒแƒ’แƒ“แƒ”แƒก.

แƒแƒฅ แƒแƒ แƒ˜แƒก แƒจแƒ”แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ แƒกแƒฅแƒ”แƒ›แƒแƒจแƒ˜ แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒงแƒ•แƒ”แƒšแƒ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜แƒก แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ” แƒกแƒ™แƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒก แƒ›แƒ˜แƒกแƒแƒฆแƒ”แƒ‘แƒแƒ“ โ€˜publicโ€™:

SELECT relname, indexrelname, idx_scan
FROM   pg_catalog.pg_stat_user_indexes
WHERE  schemaname = 'public';
with output like this:
pagila=# SELECT relname, indexrelname, idx_scan
pagila-# FROM   pg_catalog.pg_stat_user_indexes
pagila-# WHERE  schemaname = 'public'
pagila-# LIMIT  10;
    relname    |    indexrelname    | idx_scan
---------------+--------------------+----------
 customer      | customer_pkey      |    32093
 actor         | actor_pkey         |     5462
 address       | address_pkey       |      660
 category      | category_pkey      |     1000
 city          | city_pkey          |      609
 country       | country_pkey       |      604
 film_actor    | film_actor_pkey    |        0
 film_category | film_category_pkey |        0
 film          | film_pkey          |    11043
 inventory     | inventory_pkey     |    16048
(10 rows)

แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜แƒก แƒแƒฆแƒ“แƒ’แƒ”แƒœแƒ แƒœแƒแƒ™แƒšแƒ”แƒ‘แƒ˜ แƒกแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜แƒ—

แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜ แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒ”แƒœ แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ แƒแƒจแƒ”แƒœแƒ”แƒ‘แƒแƒก, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒจแƒ”แƒจแƒฃแƒžแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ“แƒ แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ แƒแƒจแƒ”แƒœแƒ”แƒ‘แƒแƒ› แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ“แƒแƒแƒฉแƒฅแƒแƒ แƒแƒก แƒกแƒ™แƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒ. แƒแƒกแƒ”แƒ•แƒ” แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ“แƒแƒ–แƒ˜แƒแƒœแƒ“แƒ”แƒก. แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒชแƒ•แƒšแƒแƒ› แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒแƒกแƒ”แƒ•แƒ” แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒแƒก แƒ›แƒ˜แƒกแƒ˜ แƒแƒฆแƒ“แƒ’แƒ”แƒœแƒ.

แƒžแƒแƒ แƒแƒšแƒ”แƒšแƒฃแƒ แƒ˜ แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒก แƒฉแƒแƒ แƒ—แƒ•แƒ

PostgreSQL 11-แƒจแƒ˜ B-Tree แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ แƒ”แƒ แƒ—แƒ“แƒ แƒแƒฃแƒšแƒแƒ“ แƒฎแƒ“แƒ”แƒ‘แƒ. แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒ“แƒแƒกแƒแƒฉแƒฅแƒแƒ แƒ”แƒ‘แƒšแƒแƒ“, แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒš แƒ˜แƒฅแƒœแƒแƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒžแƒแƒ แƒแƒšแƒ”แƒšแƒฃแƒ แƒ˜ แƒ›แƒฃแƒจแƒแƒ™แƒ˜. แƒ—แƒฃแƒ›แƒชแƒ, แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ“แƒ˜แƒ—, แƒ แƒแƒ› แƒ”แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜ แƒกแƒฌแƒแƒ แƒแƒ“ แƒแƒ แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜:

SET max_parallel_workers = 32;
SET max_parallel_maintenance_workers = 16;

แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜ แƒซแƒแƒšแƒ˜แƒแƒœ แƒ›แƒชแƒ˜แƒ แƒ”แƒ. แƒ˜แƒ“แƒ”แƒแƒšแƒฃแƒ  แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ”แƒก แƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒ‘แƒ˜ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ˜แƒ–แƒแƒ แƒ“แƒแƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒแƒ แƒ˜แƒก แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒแƒกแƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“. แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒ”แƒ— แƒ›แƒ”แƒขแƒ˜ แƒจแƒ˜ แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ.

แƒคแƒแƒœแƒ˜แƒก แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ

แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ— แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜ แƒคแƒแƒœแƒ–แƒ” แƒแƒคแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— CONCURRENTLY แƒ’แƒฃแƒœแƒ“แƒ”แƒ‘แƒ˜ CREATE INDEX:

pagila=# CREATE INDEX CONCURRENTLY idx_address1 ON address(district);
CREATE INDEX

แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒก แƒ”แƒก แƒžแƒ แƒแƒชแƒ”แƒ“แƒฃแƒ แƒ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ“แƒ”แƒ‘แƒ แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜แƒกแƒ’แƒแƒœ แƒ˜แƒ›แƒ˜แƒ—, แƒ แƒแƒ› แƒแƒ  แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒก แƒฉแƒแƒ™แƒ”แƒขแƒ•แƒแƒก แƒ›แƒแƒ’แƒ˜แƒ“แƒแƒ–แƒ” แƒ“แƒ, แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“, แƒแƒ  แƒ‘แƒšแƒแƒ™แƒแƒ•แƒก แƒฉแƒแƒฌแƒ”แƒ แƒ˜แƒก แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒก. แƒ›แƒ”แƒแƒ แƒ”แƒก แƒ›แƒฎแƒ แƒ˜แƒ•, แƒแƒ›แƒแƒก แƒ›แƒ”แƒขแƒ˜ แƒ“แƒ แƒ แƒ“แƒ แƒ›แƒ”แƒขแƒ˜ แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ˜ แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ.

Postgres แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒก แƒฃแƒแƒ›แƒ แƒแƒ• แƒ›แƒแƒฅแƒœแƒ˜แƒšแƒแƒ‘แƒแƒก แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฅแƒ›แƒœแƒ”แƒšแƒแƒ“ แƒ“แƒ แƒ แƒแƒ˜แƒ›แƒ” แƒ’แƒแƒœแƒกแƒแƒ™แƒฃแƒ—แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ˜แƒก แƒ’แƒแƒ“แƒแƒญแƒ แƒ˜แƒก แƒ’แƒ–แƒ”แƒ‘แƒก, แƒแƒกแƒ”แƒ•แƒ” แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒก แƒ’แƒ–แƒ”แƒ‘แƒก แƒ˜แƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒ›แƒ™แƒ•แƒ”แƒ—แƒ แƒแƒ“ แƒ’แƒแƒ˜แƒ–แƒ แƒ“แƒ”แƒ‘แƒ. แƒ•แƒ˜แƒ›แƒ”แƒ“แƒแƒ•แƒœแƒ”แƒ‘แƒ—, แƒ แƒแƒ› แƒ”แƒก แƒ แƒฉแƒ”แƒ•แƒ”แƒ‘แƒ˜ แƒ“แƒแƒ’แƒ”แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒแƒ— แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ›แƒ˜แƒ˜แƒฆแƒแƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ แƒ›แƒ–แƒแƒ“ แƒ˜แƒงแƒแƒก แƒ›แƒแƒกแƒจแƒขแƒแƒ‘แƒ˜แƒก แƒ’แƒแƒกแƒแƒ–แƒแƒ›แƒแƒ“.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ