Hi, I always have questions on sql tunning, here is the one: gtld_analysis=# \d gtld_owner
Table "gtld_owner" Attribute | Type | Modifier ----------------+------------------------+------------ owner_name | character varying(100) | netblock_start | integer | not null /* primary key */ netblock_end | integer | not null country | character varying(100) | country_c | smallint | default -1 region | character varying(100) | region_c | smallint | default -1 city | character varying(100) | city_c | smallint | default -1 lat | numeric(9,4) | long | numeric(9,4) | Indices: gtld_owner_pkey, owner_nb_end gtld_analysis=# select count(*) from gtld_owner; count --------- 2174335 (1 row) gtld_analysis=# explain SELECT NETBLOCK_START gtld_analysis-# FROM GTLD_OWNER gtld_analysis-# WHERE NETBLOCK_START = -2147483648; NOTICE: QUERY PLAN: Seq Scan on gtld_owner (cost=0.00..80021.37 rows=23 width=4) EXPLAIN Why it didn't use index scan? what rows=23 means? We have an application which loops each row and select netblock_start, and it is slow overall. Anyone can give me a clue? Thanks! Anna Zhang ---------------------------(end of broadcast)--------------------------- TIP 5: Have you checked our extensive FAQ? http://www.postgresql.org/users-lounge/docs/faq.html