เจชเฉเจธเจเจเฉเจฐเฉเจธ เจธเฉฐเจธเจพเจฐ เจตเจฟเฉฑเจ, เจกเฉเจเจพเจฌเฉเจธ เจธเจเฉเจฐเฉเจ (เจเจฟเจธเจจเฉเฉฐ "เจนเฉเจช" เจเจฟเจนเจพ เจเจพเจเจฆเจพ เจนเฉ) เจฆเฉ เจเฉเจธเจผเจฒ เจจเฉเจตเฉเจเฉเจธเจผเจจ เจฒเจ เจธเฉเจเจเจพเจเจ เจเจผเจฐเฉเจฐเฉ เจนเจจเฅค เจชเฉเจธเจเจเฉเจฐเฉเจธ เจเจธเจฆเฉ เจฒเจ เจเจฒเฉฑเจธเจเจฐเจฟเฉฐเจ เจฆเจพ เจธเจฎเจฐเจฅเจจ เจจเจนเฉเจ เจเจฐเจฆเจพ เจนเฉ, เจ
เจคเฉ 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)
เจธเฉเจเจเจพเจเจ 'เจคเฉ เจตเฉ เจตเจฟเจเจพเจฐ เจจเจนเฉเจ เจเฉเจคเจพ เจเจฟเจเฅค เจฌเฉ-เจเฉเจฐเฉ เจเฉฐเจกเฉเจเจธ เจธเฉเจเจเจพเจเจ เจฎเฉเฉฑเจฒเจพเจ เจตเจฟเฉฑเจ เจตเจฟเจ เจเจคเฉเจเจค เจคเฉฑเจคเจพเจ เจฆเฉ เจฎเฉเจเฉเจฆเจเฉ เจฌเจพเจฐเฉ เจเจพเจฃเฉ เจจเจนเฉเจ เจนเฉเฅค
เจธเจพเจจเฉเฉฐ เจเฉฑเจ 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_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 เจตเจฟเฉฑเจ, เจเฉฑเจ เจฌเฉ-เจเฉเจฐเฉ เจเฉฐเจกเฉเจเจธ เจฌเจฃเจพเจเจฃเจพ เจธเจฎเจเจพเจฒเฉ เจนเฉเฅค เจฐเจเจจเจพ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจจเฉเฉฐ เจคเฉเจเจผ เจเจฐเจจ เจฒเจ, เจเจ เจธเจฎเจพเจจเจพเจเจคเจฐ เจเจพเจฎเจฟเจเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเฉเจคเฉ เจเจพ เจธเจเจฆเฉ เจนเฉเฅค เจนเจพเจฒเจพเจเจเจฟ, เจฏเจเฉเจจเฉ เจฌเจฃเจพเจ เจเจฟ เจเจน เจธเฉฐเจฐเจเจจเจพ เจตเจฟเจเจฒเจช เจธเจนเฉ เจขเฉฐเจ เจจเจพเจฒ เจธเฉเฉฑเจ เจเฉเจคเฉ เจเจ เจนเจจ:
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