Hi there, I have a simple aggregate query: SELECT count("PK_ID") AS "b1" FROM "tbA" WHERE "PK_ID" > "f1"( 'c1' ), which has the following execution plan: "Aggregate (cost=2156915.42..2156915.43 rows=1 width=4)" " -> Seq Scan on "tbA" (cost=0.00..2137634.36 rows=7712423 width=4)" " Filter: ("PK_ID" > "f1"('c1'::character varying))" I tried to get the same result with the following query: SELECT ( SELECT count("PK_ID") AS "b1" FROM "tbA" ) - ( SELECT count("PK_ID") AS "b1" FROM "tbA" WHERE "PK_ID" <= "f1"( 'c1' ) ) with the execution plan: "Result (cost=248952.95..248952.96 rows=1 width=0)" " InitPlan" " -> Aggregate (cost=184772.11..184772.12 rows=1 width=4)" " -> Seq Scan on "tbA" (cost=0.00..165243.49 rows=7811449 width=4)" " -> Aggregate (cost=64180.81..64180.82 rows=1 width=4)" " -> Index Scan using "tbA_pkey" on "tbA" (cost=0.25..63933.24 rows=99026 width=4)" " Index Cond: ("PK_ID" <= "f1"('c1'::character varying))" How do you explain the cost is about ten times lower in the 2nd query than the first ? TIA, Sabin -- Sent via pgsql-performance mailing list (pgsql-performance@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-performance