Re: joining two tables slow due to sequential scan - Mailing list pgsql-performance

From Dave Dutcher
Subject Re: joining two tables slow due to sequential scan
Date
Msg-id 001f01c62e8f$63551840$8300a8c0@tridecap.com
Whole thread Raw
In response to joining two tables slow due to sequential scan  ("Tim Jones" <TJones@optio.com>)
List pgsql-performance

What version of postgres are you using?  Can you post the output from EXPLAIN ANALYZE?

 

 

-----Original Message-----
From: pgsql-performance-owner@postgresql.org [mailto:pgsql-performance-owner@postgresql.org] On Behalf Of Tim Jones
Sent: Friday, February 10, 2006 4:07 PM
To: pgsql-performance@postgresql.org
Subject: [PERFORM] joining two tables slow due to sequential scan

 

 

I am trying to join two tables and keep getting a sequential scan in the plan even though there is an index on the columns I am joining on.  Basically this the deal  ... I have two tables with docid in them which is what I am using for the join. 

 

ClinicalDocs ... (no primary key) though it does not help if I make docid primary key

docid integer (index)

patientid integer (index)

visitid integer (index)

 ...

 

Documentversions

docid integer (index)

docversionnumber (index)

docversionidentifier (primary key)

 

It seems to do an index scan if I put the primary key as docid.  This is what occurs when I link on the patid from ClinicalDocs to patient table.  However I can not make the docid primary key because it gets repeated depending on how may versions of a document I have.  I have tried using a foreign key on documentversions with no sucess.

 

In addition this query

 

select * from documentversions join clinicaldocuments on documentversions.documentidentifier
= clinicaldocuments.dssdocumentidentifier where documentversions.documentstatus = 'AC';

 

does index scan

but if I change the order e.g

 

select * from clinicaldocuments join documentversions on clinicaldocuments.dssdocumentidentifier
= documentversions .documentidentifier where clinicaldocuments.patientidentifier= 123;

 

does sequential scan what I need is bottom query

it is extremely slow ... Any ideas ?

 

Tim Jones

Healthcare Project Manager

Optio Software, Inc.

(770) 576-3555

 

pgsql-performance by date:

Previous
From: "Tim Jones"
Date:
Subject: joining two tables slow due to sequential scan
Next
From: Scott Marlowe
Date:
Subject: Re: joining two tables slow due to sequential scan