āĻĒā§āĻ¸ā§āĻāĻā§āĻ°ā§āĻ¸ āĻŦāĻŋāĻļā§āĻŦā§, āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ¸ā§āĻā§āĻ°ā§āĻ (āĻ¯āĻžāĻā§ āĻšāĻŋāĻĒ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ) āĻĻāĻā§āĻˇāĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¨ā§āĻāĻŋāĻā§āĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻāĻāĻā§āĻ˛āĻŋ āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖāĨ¤ Postgres āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°āĻŋāĻ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°ā§ āĻ¨āĻž, āĻāĻŦāĻ MVCC āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ° āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻ āĻāĻŋāĻĒāĻ˛ā§āĻ° āĻ
āĻ¨ā§āĻāĻā§āĻ˛āĻŋ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖā§āĻ° āĻ¸āĻžāĻĨā§ āĻļā§āĻˇ āĻāĻ°ā§ āĻĻā§āĻ¯āĻŧāĨ¤ āĻ
āĻ¤āĻāĻŦ, āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻā§āĻ˛āĻŋāĻā§ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĻāĻā§āĻˇ āĻ¸ā§āĻāĻ āĻ¤ā§āĻ°āĻŋ āĻāĻŦāĻ āĻŦāĻāĻžāĻ¯āĻŧ āĻ°āĻžāĻāĻ¤ā§ āĻ¸āĻā§āĻˇāĻŽ āĻšāĻāĻ¯āĻŧāĻž āĻā§āĻŦāĻ āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖāĨ¤
āĻāĻ¨āĻĄā§āĻā§āĻ¸ā§āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻ āĻāĻŦāĻ āĻāĻ¨ā§āĻ¨āĻ¤ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻŋ āĻāĻŋāĻā§ āĻāĻŋāĻĒāĻ¸ āĻāĻĒāĻ¨āĻžāĻ° āĻ¨āĻāĻ°ā§ āĻāĻ¨āĻāĻŋāĨ¤
āĻĻā§āĻ°āĻˇā§āĻāĻŦā§āĻ¯: āĻ¨ā§āĻā§ āĻĻā§āĻāĻžāĻ¨ā§ āĻĒā§āĻ°āĻļā§āĻ¨āĻā§āĻ˛āĻŋ āĻ
āĻĒāĻ°āĻŋāĻļā§āĻ§āĻŋāĻ¤ āĻāĻĒāĻ° āĻāĻžāĻ āĻāĻ°ā§
āĻāĻāĻžāĻ°āĻŋāĻ āĻāĻ¨āĻĄā§āĻā§āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§
āĻāĻ˛ā§āĻ¨ āĻ¨āĻŋāĻˇā§āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽā§āĻ˛ āĻ āĻŋāĻāĻžāĻ¨āĻž āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ
āĻ¨ā§āĻ°ā§āĻ§ āĻĻā§āĻāĻŋāĨ¤ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° 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
" āĻāĻ° āĻŽāĻžāĻ¨ā§ āĻĒā§āĻ¸ā§āĻāĻā§āĻ°ā§āĻ¸ āĻ¸ā§āĻāĻ āĻā§āĻ°āĻ˛ āĻāĻ°āĻŦā§ "idx_cust1
", āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻāĻ˛āĻžāĻŽā§āĻ° āĻŽāĻžāĻ¨ āĻĒāĻĄāĻŧāĻ¤ā§ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻ¸ā§āĻ¤ā§āĻĒ āĻ
āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻāĻžāĻ˛āĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻ¨ (āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻāĻ˛āĻžāĻŽ email
) āĻ¯ā§ āĻ
āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤
PostgreSQL 11 āĻāĻāĻžāĻ°āĻŋāĻ āĻāĻ¨āĻĄā§āĻā§āĻ¸ āĻāĻžāĻ˛ā§ āĻāĻ°ā§āĻā§āĨ¤ āĻ¤āĻžāĻ°āĻž āĻāĻĒāĻ¨āĻžāĻā§ āĻ¸ā§āĻāĻā§ āĻāĻ āĻŦāĻž āĻāĻāĻžāĻ§āĻŋāĻ āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻāĻ˛āĻžāĻŽ āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤ āĻāĻ°āĻžāĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻ¯āĻŧ - āĻ¤āĻžāĻĻā§āĻ° āĻŽāĻžāĻ¨āĻā§āĻ˛āĻŋ āĻ¸ā§āĻāĻ āĻĄā§āĻāĻž āĻ¸ā§āĻā§āĻ°ā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
āĻ¯āĻĻāĻŋ āĻāĻŽāĻ°āĻž āĻāĻ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯āĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋ āĻāĻŦāĻ āĻ¸ā§āĻāĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻŽā§āĻ˛ āĻŽāĻžāĻ¨ āĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻŋ, āĻ¤āĻžāĻšāĻ˛ā§ āĻĒā§āĻ¸ā§āĻāĻā§āĻ°ā§āĻ¸āĻā§ āĻŽāĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻ¸ā§āĻ¤ā§āĻĒā§ āĻĻā§āĻāĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻŦā§ āĻ¨āĻž 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 āĻāĻĄāĻŧāĻžāĻ¤ā§ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻāĻ°ā§āĨ¤
āĻāĻ, āĻāĻāĻžāĻ°āĻŋāĻ āĻāĻ¨āĻĄā§āĻā§āĻ¸ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻŦāĻŋ-āĻŦā§āĻā§āĻˇā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ˛āĻŦā§āĻ§āĨ¤ āĻ¤āĻŦā§ āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻ°āĻā§āĻˇāĻŖāĻžāĻŦā§āĻā§āĻˇāĻŖā§āĻ° āĻĒā§āĻ°āĻā§āĻˇā§āĻāĻž āĻŦā§āĻļāĻŋ āĻšāĻŦā§āĨ¤
āĻāĻāĻļāĻŋāĻ āĻ¸ā§āĻāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§
āĻāĻāĻļāĻŋāĻ āĻ¸ā§āĻā§ āĻ¸ā§āĻā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻ¸āĻžāĻ°āĻŋāĻ° āĻāĻāĻāĻŋ āĻāĻĒāĻ¸ā§āĻāĨ¤ āĻāĻāĻŋ āĻāĻĒāĻ¨āĻžāĻā§ āĻ¸ā§āĻāĻā§āĻ° āĻāĻāĻžāĻ° āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ āĻĻā§āĻ°ā§āĻ¤ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧāĨ¤
āĻ§āĻ°āĻž āĻ¯āĻžāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻ¯āĻžāĻ˛āĻŋāĻĢā§āĻ°ā§āĻ¨āĻŋāĻ¯āĻŧāĻžāĻ¯āĻŧ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻ°āĻžāĻšāĻāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽā§āĻ˛ āĻ āĻŋāĻāĻžāĻ¨āĻžāĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻĒā§āĻ¤ā§ āĻšāĻŦā§ā§ˇ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻāĻ āĻŽāĻ¤ āĻšāĻŦā§:
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 āĻāĻ°āĻ āĻ¸āĻš āĻāĻāĻāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻšāĻŋāĻĒ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻ° āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻāĻ°ā§āĨ¤
āĻāĻ˛ā§āĻ¨ āĻĻā§āĻāĻŋ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤ āĻŦāĻŋ-āĻā§āĻ°āĻŋ āĻ¸ā§āĻāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻāĻ°āĻŦā§ āĻāĻŋāĻ¨āĻž:
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)
āĻ¸ā§āĻāĻāĻāĻŋāĻ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧāĻ¨āĻŋāĨ¤ āĻŦāĻŋ-āĻā§āĻ°āĻŋ āĻāĻ¨āĻĄā§āĻā§āĻ¸ā§āĻ° āĻ¸ā§āĻā§āĻā§āĻ¤ āĻŽāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ¤ā§ āĻĒā§āĻĨāĻ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻ āĻ¸ā§āĻ¤āĻŋāĻ¤ā§āĻŦ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻā§āĻ¨āĻ āĻ§āĻžāĻ°āĻŖāĻž āĻ¨ā§āĻāĨ¤
āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻāĻŋāĻāĻāĻāĻ¨ āĻ¸ā§āĻāĻ āĻĻāĻ°āĻāĻžāĻ°āĨ¤
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)
āĻāĻŋāĻāĻāĻāĻ¨ āĻ¸ā§āĻāĻ āĻ¸ā§āĻŦāĻ¤āĻ¨ā§āĻ¤ā§āĻ° āĻŽāĻžāĻ¨āĻā§āĻ˛āĻŋāĻā§ āĻ¸ā§āĻā§āĻā§āĻ¤ āĻ¯ā§āĻāĻŋāĻ āĻŽāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ¤ā§ āĻŽā§āĻ¯āĻžāĻĒ āĻāĻ°āĻ¤ā§ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°ā§, āĻ¯āĻžāĻ° āĻĢāĻ˛ā§ āĻā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ°ā§ āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻžāĻ° āĻ āĻ°ā§āĻ§ā§āĻā§āĻ°āĻ āĻŦā§āĻļāĻŋ āĻāĻ°āĻ āĻšāĻ¯āĻŧāĨ¤
āĻĄā§āĻĒā§āĻ˛āĻŋāĻā§āĻ āĻ¸ā§āĻā§ āĻĒāĻ°āĻŋāĻ¤ā§āĻ°āĻžāĻŖ āĻĒāĻžāĻāĻ¯āĻŧāĻž
āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻĨā§ āĻ¸ā§āĻāĻāĻā§āĻ˛āĻŋ āĻāĻŽāĻž āĻšāĻ¯āĻŧ, āĻāĻŦāĻ āĻāĻāĻ¨āĻ āĻāĻāĻ¨āĻ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¸ā§āĻāĻā§ āĻāĻā§āĻ°āĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋāĻ° āĻŽāĻ¤ā§ āĻāĻāĻ āĻ¸āĻāĻā§āĻāĻž āĻĨāĻžāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻŽāĻžāĻ¨āĻŦ-āĻĒāĻžāĻ āĻ¯ā§āĻā§āĻ¯ 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_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
āĻāĻ āĻ¸ā§āĻāĻ āĻ¤ā§āĻ°āĻŋāĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖā§āĻ° āĻĨā§āĻā§ āĻāĻ˛āĻžāĻĻāĻž āĻ¯ā§ āĻāĻāĻŋāĻ¤ā§ āĻā§āĻŦāĻŋāĻ˛āĻāĻŋ āĻ˛āĻ āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¨ā§āĻ āĻāĻŦāĻ āĻ¤āĻžāĻ āĻ˛ā§āĻāĻžāĻ° āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ˛āĻžāĻĒāĻā§āĻ˛āĻŋāĻā§ āĻŦā§āĻ˛āĻ āĻāĻ°ā§ āĻ¨āĻžāĨ¤ āĻ āĻ¨ā§āĻ¯āĻĻāĻŋāĻā§, āĻāĻāĻŋ āĻŦā§āĻļāĻŋ āĻ¸āĻŽāĻ¯āĻŧ āĻ¨ā§āĻ¯āĻŧ āĻāĻŦāĻ āĻāĻ°āĻ āĻ¸āĻāĻ¸ā§āĻĨāĻžāĻ¨ āĻā§āĻ°āĻšāĻŖ āĻāĻ°ā§āĨ¤
āĻĒā§āĻ¸ā§āĻāĻā§āĻ°ā§āĻ¸ āĻā§āĻ¨ā§ āĻŦāĻŋāĻļā§āĻˇ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻ¸ā§āĻā§ āĻ¤ā§āĻ°āĻŋ āĻāĻŦāĻ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ
āĻ¨ā§āĻ āĻ¨āĻŽāĻ¨ā§āĻ¯āĻŧ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻāĻ°ā§ āĻāĻŦāĻ āĻāĻĒāĻ¨āĻžāĻ° āĻ
ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨āĻāĻŋ āĻŦāĻŋāĻ¸ā§āĻĢā§āĻ°āĻāĻāĻžāĻŦā§ āĻŦā§āĻĻā§āĻ§āĻŋ āĻĒā§āĻ˛ā§ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻž āĻāĻ°āĻžāĻ° āĻāĻĒāĻžāĻ¯āĻŧāĻ āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻāĻ°ā§āĨ¤ āĻāĻŽāĻ°āĻž āĻāĻļāĻž āĻāĻ°āĻŋ āĻāĻ āĻāĻŋāĻĒāĻ¸āĻā§āĻ˛āĻŋ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻĒāĻ¨āĻžāĻ° āĻĒā§āĻ°āĻļā§āĻ¨āĻā§āĻ˛āĻŋāĻā§ āĻĻā§āĻ°ā§āĻ¤ āĻāĻŦāĻ āĻāĻĒāĻ¨āĻžāĻ° āĻĄāĻžāĻāĻžāĻŦā§āĻ¸āĻā§ āĻ¸ā§āĻā§āĻ˛ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻāĻ°āĻ¤ā§ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻāĻ°āĻŦā§ā§ˇ
āĻāĻ¤ā§āĻ¸: www.habr.com