forked from postgres/postgres
-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
bugSomething isn't workingSomething isn't workingenhancementNew feature or requestNew feature or request
Description
explain (COSTS OFF)
SELECT * FROM pg_am am WHERE am.amname IN (
SELECT c1.relname AS relname
FROM pg_class c1
JOIN pg_class c2
ON c1.oid=c2.oid AND c1.oid < 10
JOIN pg_class c3 ON (c3.oid = c2.oid)
);
Result is OK:
Hash Semi Join
Hash Cond: (am.amname = c3.relname)
-> Seq Scan on pg_am am
-> Hash
-> Index Scan using pg_class_oid_index on pg_class c3
Index Cond: ((oid < '10'::oid) AND (oid IS NOT NULL))
Query N0.2:
explain (COSTS OFF)
SELECT * FROM pg_am am WHERE am.amname IN (
SELECT c1.relname AS relname
FROM pg_class c1
JOIN pg_class c2
ON c1.oid=c2.oid AND c1.oid < 10
JOIN pg_class c3 ON (c1.oid = 1 AND c3.oid = 1)
);
No one JOIN was deleted:
Nested Loop Semi Join
Join Filter: (am.amname = c1.relname)
-> Seq Scan on pg_am am
-> Materialize
-> Nested Loop
-> Nested Loop
-> Index Scan using pg_class_oid_index on pg_class c1
Index Cond: ((oid < '10'::oid) AND (oid = '1'::oid))
-> Index Only Scan using pg_class_oid_index on pg_class c2
Index Cond: (oid = '1'::oid)
-> Index Only Scan using pg_class_oid_index on pg_class c3
Index Cond: (oid = '1'::oid)
Query N0.3:
SELECT * FROM pg_am am WHERE am.amname IN (
SELECT c1.relname AS relname
FROM pg_class c1
JOIN pg_class c2
ON c1.oid=c2.oid AND c1.oid < 10
JOIN pg_class c3 ON (c3.oid = 1 AND c1.oid = 1)
);
Only one JOIN was deleted:
Nested Loop Semi Join
Join Filter: (am.amname = c2.relname)
-> Seq Scan on pg_am am
-> Materialize
-> Nested Loop
-> Index Scan using pg_class_oid_index on pg_class c2
Index Cond: ((oid < '10'::oid) AND (oid IS NOT NULL))
-> Index Only Scan using pg_class_oid_index on pg_class c3
Index Cond: (oid = '1'::oid)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workingenhancementNew feature or requestNew feature or request
Projects
Status
Done