pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Franco Bruno Borghesi <franco@akyasociados.com.ar>
To: Charles Hauser <chauser@duke.edu>
Cc: pgsql-sql@postgresql.org
Subject: Re: query optimization
Date: Thu, 10 Jun 2004 12:45:45 -0300
Message-ID: <1086882344.1303.2.camel@taz.oficina> (raw)
In-Reply-To: <1078422984.5001.18.camel@pandorina>
References: <1078422984.5001.18.camel@pandorina>

I see that attribute project is defined as integer in library, and as
varchar(8) in clone. I suspect that's what causing the problem and
forcing a seq scan on library.

On Thu, 2004-03-04 at 14:56, Charles Hauser wrote:

> All,
> 
> I have the following query which is running quite slow on our server and
> was hoping someone would have suggestions how I might improve it.
> 
> 
> est3=>EXPLAIN SELECT clone.uniquename,clone.name,library.type,clone.clone_id
> est3->     FROM library,clone_aceg
> est3->     JOIN clone USING (clone_id)
> est3->     WHERE clone_aceg.aceg_id = 8 AND
> est3->     clone.project=library.project;
>                                              QUERY PLAN
> -----------------------------------------------------------------------------------------------------
>  Nested Loop  (cost=0.00..27.92 rows=1 width=57)
>    Join Filter: (("outer".project)::text = ("inner".project)::text)
>    ->  Nested Loop  (cost=0.00..18.55 rows=4 width=43)
>          ->  Index Scan using aceg_id_clone_aceg_key on clone_aceg  (cost=0.00..3.05 rows=4 width=4)
>                Index Cond: (aceg_id = 8)
>          ->  Index Scan using clone_pkey on clone  (cost=0.00..3.91 rows=1 width=39)
>                Index Cond: ("outer".clone_id = clone.clone_id)
>    ->  Seq Scan on library  (cost=0.00..2.15 rows=15 width=14)
> (8 rows)
> 
> 
> 
> 
> relevant tables below.
> 
> regards,
> 
> Charles
>  
> 
> Tables:
>                                     Table "public.clone"
>    Column   |         Type          |                       Modifiers
> ------------+-----------------------+--------------------------------------------------------
>  clone_id   | integer               | not null default nextval('"clone_clone_id_seq"'::text)
>  name       | character varying(10) | not null
>  uniquename | text                  | not null
>  project    | character varying(8)  |
>  p_end      | character varying(2)  |
>  lib_id     | integer               |
>  accn       | character varying(10) |
>  seq        | text                  | not null
>  seqlen     | integer               |
>  hq_start   | integer               |
>  hq_end     | integer               |
>  scaffold   | character varying(50) |
> Indexes: clone_pkey primary key btree (clone_id),
>          clone_uniquename_idx unique btree (uniquename),
>          clone_accn_idx btree (accn),
>          clone_name_idx btree (name),
>          clone_project_idx btree (project),
>          clone_scaf_idx btree (scaffold)
> 
>                              Table "public.library"
>    Column    |  Type   |                       Modifiers
> -------------+---------+--------------------------------------------------------
>  lib_id      | integer | not null default nextval('"library_lib_id_seq"'::text)
>  source      | text    |
>  type        | text    |
>  project     | integer |
>  name        | text    |
>  organism    | text    |
>  strain      | text    |
>  vector      | text    |
>  rs1         | text    |
>  rs2         | text    |
>  preparation | text    |
> Indexes: library_pkey primary key btree (lib_id),
>          library_project_idx btree (project),
>          library_type_idx btree ("type")
> 
> 
>    Table "public.clone_aceg"
>   Column  |  Type   | Modifiers
> ----------+---------+-----------
>  clone_id | integer |
>  aceg_id  | integer |
> Indexes: clone_aceg_clone_id_key unique btree (clone_id, aceg_id),
>          aceg_id_clone_aceg_key btree (aceg_id),
>          clone_id_clone_aceg_key btree (clone_id)
> Foreign Key constraints: cloneid FOREIGN KEY (clone_id) REFERENCES clone(clone_id) ON UPDATE NO ACTION ON DELETE CASCADE,
>                          acegid FOREIGN KEY (aceg_id) REFERENCES aceg(aceg_id) ON UPDATE NO ACTION ON DELETE CASCADE
>  
>                           List of relations
>  Schema |            Name            | Type  |  Owner  |    Table
> --------+----------------------------+-------+---------+--------------
>  public | aceg_aceg_idx              | index | chauser | aceg
>  public | aceg_assembly_key          | index | chauser | aceg
>  public | aceg_blast_aceg_id_key     | index | chauser | aceg_blast
>  public | aceg_contig_idx            | index | chauser | aceg
>  public | aceg_g_scaffold_idx        | index | chauser | aceg
>  public | aceg_has_blast_idx         | index | chauser | aceg
>  public | aceg_id_aceg_blast_key     | index | chauser | aceg_blast
>  public | aceg_id_clone_aceg_key     | index | chauser | clone_aceg
>  public | aceg_pkey                  | index | chauser | aceg
>  public | aceg_uniquename_idx        | index | chauser | aceg
>  public | blast_id_aceg_blast_key    | index | chauser | aceg_blast
>  public | blast_id_contig_blast_key  | index | chauser | contig_blast
>  public | blast_ortho_idx            | index | chauser | blast
>  public | blast_pkey                 | index | chauser | blast
>  public | clone_accn_idx             | index | chauser | clone
>  public | clone_aceg_clone_id_key    | index | chauser | clone_aceg
>  public | clone_contig_clone_id_key  | index | chauser | clone_contig
>  public | clone_id_clone_aceg_key    | index | chauser | clone_aceg
>  public | clone_id_clone_contig_key  | index | chauser | clone_contig
>  public | clone_name_idx             | index | chauser | clone
>  public | clone_pkey                 | index | chauser | clone
>  public | clone_project_idx          | index | chauser | clone
>  public | clone_scaf_idx             | index | chauser | clone
>  public | clone_uniquename_idx       | index | chauser | clone
>  public | contig_ace_idx             | index | chauser | contig
>  public | contig_assembly_idx        | index | chauser | contig
>  public | contig_assembly_key        | index | chauser | contig
>  public | contig_blast_blast_id_key  | index | chauser | contig_blast
>  public | contig_contig_idx          | index | chauser | contig
>  public | contig_has_blast_idx       | index | chauser | contig
>  public | contig_id_clone_contig_key | index | chauser | clone_contig
>  public | contig_id_contig_blast_key | index | chauser | contig_blast
>  public | contig_pkey                | index | chauser | contig
>  public | contig_uniquename_idx      | index | chauser | contig
>  public | library_pkey               | index | chauser | library
>  public | library_project_idx        | index | chauser | library
>  public | library_type_idx           | index | chauser | library
> ( 
> 
>  
> 
> 
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
>       subscribe-nomail command to majordomo@postgresql.org so that your
>       message can get through to the mailing list cleanly
> 

Attachments:

  signature.asc (application/pgp-signature, 186B) download

view thread (4+ messages)

Message-ID: <1086882344.1303.2.camel@taz.oficina>
Permalink:  ../1086882344.1303.2.camel@taz.oficina/
Also on:    postgresql.org/message-id/1086882344.1303.2.camel@taz.oficina

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: franco@akyasociados.com.ar, chauser@duke.edu
  Subject: Re: query optimization
  In-Reply-To: <1086882344.1303.2.camel@taz.oficina>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox