Hi, stright to my "problem": explain SELECT * FROM t_route WHERE t_route.route_type_fk = 1 limit 4; "Limit (cost=0.00..0.88 rows=4 width=2640)" " -> Seq Scan on t_route (cost=0.00..118115.25 rows=538301 width=2640)" " Filter: (route_type_fk = 1)" If I try to select constant 1 from table with two rows, it will be something like this: explain SELECT * FROM t_route WHERE t_route.route_type_fk = (SELECT id FROM t_route_type WHERE type = 2) limit 4; "Limit (cost=1.02..1.91 rows=4 width=2640)" " InitPlan" " -> Seq Scan on t_route_type (cost=0.00..1.02 rows=1 width=8)" " Filter: ("type" = 2)" " -> Seq Scan on t_route (cost=0.00..118115.25 rows=535090 width=2640)" " Filter: (route_type_fk = $0)" First query is done in about milicesonds. Second is longer than 60 seconds. t_route is bigger table (~10M rows). I think that it seq scans whole table. Is it bug? If no, how can I achieve that second select will not take time to end of world... Have a nice day and thanks for any reply. -- Odborník na všetko je zlý odborník. Ja sa snažím byť výnimkou potvrdzujúcou pravidlo. -- Sent via pgsql-performance mailing list (pgsql-performance@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-performance