N
Главное тут то, что не важно, джойн явный или же not exists -- выпрямление работает
Size: a a a
N
s
test=# explain select from j1 where not exists (select from j2 where j2.i = j1.i) and j1.i < 100;
QUERY PLAN
--------------------------------------------------------------------------------
Nested Loop Anti Join (cost=0.85..851.60 rows=51 width=0)
-> Index Only Scan using j1_pkey on j1 (cost=0.42..10.21 rows=102 width=4)
Index Cond: (i < 100)
-> Index Only Scan using j2_pkey on j2 (cost=0.42..8.24 rows=1 width=4)
Index Cond: (i = j1.i)
(5 rows)
N
N
test=# explain select from j1 where not exists (select from j2 where j2.i = j1.i);
QUERY PLAN
----------------------------------------------------------------------
Hash Anti Join (cost=15417.00..47797.50 rows=500000 width=0)
Hash Cond: (j1.i = j2.i)
-> Seq Scan on j1 (cost=0.00..14425.00 rows=1000000 width=4)
-> Hash (cost=7213.00..7213.00 rows=500000 width=4)
-> Seq Scan on j2 (cost=0.00..7213.00 rows=500000 width=4)
(5 rows)
s
N
s
test=# explain select from j1 where not exists (select from j2 where j2.i = j1.i);
QUERY PLAN
----------------------------------------------------------------------
Hash Anti Join (cost=15417.00..47797.50 rows=500000 width=0)
Hash Cond: (j1.i = j2.i)
-> Seq Scan on j1 (cost=0.00..14425.00 rows=1000000 width=4)
-> Hash (cost=7213.00..7213.00 rows=500000 width=4)
-> Seq Scan on j2 (cost=0.00..7213.00 rows=500000 width=4)
(5 rows)
YS
N
N
2_
N
2_
s
N
s
K
Filter: (gvkey = ANY ('{~1600 items}'::integer[]))
Rows Removed by Filter: 1536564create temp table csco_idesind_2008_2020 as
select gvkey, datadate, datafmt from csco_idesind where datadate BETWEEN '2008-01-01 00:00:00' AND '2020-07-01 00:00:00' order by datadate;
plain analyze SELECT k.gvkey, k.datadate, i.valuei, i.item, i.effdate, i.thrudate, k.datafmtи выхлоп анализатора:
FROM csco_ifndq AS i
JOIN csco_idesind_2008_2020 AS k ON k.coifnd_id = i.coifnd_id
WHERE k.gvkey IN (...500)
AND
k.datadate BETWEEN '2013-10-01 00:00:00' AND '2015-09-01 00:00:00'
N
N
s