Our production database is running under 7.2.4; our test database
running almost the same data is at 7.3.3. One table has about 400,000
rows in each schema. A query against an indexed column uses an index
scan under 7.2.4, but a sequential scan under 7.3.3. A count of the
table in question shows that they have comparable numbers of matching
rows.
On 7.2.4:
select count(*) from articles;
count
--------
420213
select count(*) from articles
where path_base like 'http://news.findlaw.com/hdocs%';
count
-------
38
(and it returns this nearly instantaneously)
explain select count(*) from articles
where path_base like 'http://news.findlaw.com/hdocs%'
Aggregate (cost=6.02..6.02 rows=1 width=0)
-> Index Scan using ix_articles_3 on articles (cost=0.00..6.01
rows=1 width=0)
On 7.3.3:
select count(*) from articles;
count
--------
406319
select count(*) from articles
where path_base like 'http://news.findlaw.com/hdocs%'
count
-------
23
(and it takes many seconds to return)
explain select count(*) from articles
where path_base like 'http://news.findlaw.com/hdocs%'
Aggregate (cost=205946.65..205946.65 rows=1 width=0)
-> Seq Scan on articles (cost=0.00..205946.65 rows=1 width=0)
Filter: (path_base ~~ 'http://news.findlaw.com/hdocs%'::text)
I can't find any differences between the indexes (ix_articles_3 exists
in both schemas); the column statistics are set up the same (the
default); and the optimizer settings (costs in postgresql.conf) are the
same.
--
Jeff Boes vox 269.226.9550 ext 24
Database Engineer fax 269.349.9076
Nexcerpt, Inc. http://www.nexcerpt.com
...Nexcerpt... Extend your Expertise