I apologize about the CC; I thought I had done so. There are fourteen (14) distinct values in rcrd_cd. And I don't know if this counts as something odd, but I got the following values by doing a vacuum full analyze, then running the set with index, dropping index, running set without. Values with index: > > attest=# select count(*) from ptrans; > 16488578 > > attest=# select count(*) from ptrans where rcrd_cd = '0A'; > 6701655 > > attest=# explain analyze select cntrct_id, tran_dt from ptrans where rcrd_cd > = ' > > > 0A'; > Bitmap Heap Scan on ptrans (cost=1223.86..151183.39 rows=87439 width=21) > (actu > > > al time=2255.640..70371.304 rows=6701655 loops=1) > -> Bitmap Index Scan on ptrans_cid_trandt_idx (cost=0.00..1223.86 > rows=8743 > > > 9 width=0) (actual time=2216.856..2216.856 rows=204855 loops=1) > Total runtime: 89964.419 ms > Values without index: > > attest=# select count(*) from ptrans; > 16488578 > > attest=# select count(*) from ptrans where rcrd_cd = '0A'; > 204855 > > attest=# explain analyze select cntrct_id, tran_dt from ptrans where rcrd_cd > = '0A'; > Seq Scan on ptrans (cost=0.00..384813.22 rows=87439 width=21) (actual > time=20.286..65330.049 rows=204855 loops=1) > Filter: (rcrd_cd = '0A'::bpchar) > Total runtime: 65945.160 ms Again, someone mind pointing out to me where I've managed to mess this one up?
Richard Huxton <[EMAIL PROTECTED]> wrote: Don't forget to CC: the list. Andrew Edson wrote: > I apologize; You are correct in that I mistyped my original structure. Here > is the information for the correct explain and explain analyze statements. > > attest=# explain select cntrct_id, tran_dt from ptrans where rcrd_cd = '0A'; No need for the simple explain - explain analyse includes all the information. > attest=# explain analyze select cntrct_id, tran_dt from ptrans where rcrd_cd > = '0A'; > QUERY PLAN > ------------------------------------------------------------------------------------------------------------------------------------------------ > Bitmap Heap Scan on ptrans (cost=1223.86..149853.23 rows=85741 width=21) > (actual time=2302.363..70321.838 rows=6701655 loops=1) > -> Bitmap Index Scan on ptrans_cid_trandt_idx (cost=0.00..1223.86 rows=85741 > width=0) (actual time=2269.064..2269.064 rows=204855 loops=1) > Total runtime: 89854.843 ms Well, it's taking 90 seconds to return 6.7 million rows. Depending on your system and memory settings, that might not be unreasonable. It *is* getting the estimate of returned rows wrong (it thinks 85,741 will match) which is hugely out of line. Is there something odd with this table/column or haven't you analysed recently? How many unique values does rcrd_cd have, and how many rows does the table have? I don't know that you'll get this down to sub-second responses though, not if you're trying to return 6 million rows from an even larger table. -- Richard Huxton Archonet Ltd ---------------------------(end of broadcast)--------------------------- TIP 6: explain analyze is your friend --------------------------------- Ready for the edge of your seat? Check out tonight's top picks on Yahoo! TV.