pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Tomasz Myrta <jasiek@klaster.net>
To: pgsql-sql@postgresql.org
Subject: Re: To use a VIEW or not to use a View.....
Date: Wed, 22 Jan 2003 22:54:19 +0100
Message-ID: <3E2F130B.4030002@klaster.net> (raw)
In-Reply-To: <20030122130604.C1159-100000@megazone23.bigpanda.com>
References: <20030122130604.C1159-100000@megazone23.bigpanda.com>

Stephan Szabo wrote:

>That's not the same join for optimization purposes
>since postgresql treats explicit join syntax as a
>constraint on the ordering of joins.
>
>The same join would be something like:
>
>przystanki p1 join miasta m1 using (id_miasta)
>join (przystanki p2 join miasta m2 using (id_miasta))
> using (id_przystanku)
>
>minus the fact I think you'd need some explicit naming in
>there.

You are right.

The result of your query is:
explain select * from
przystanki p1 join miasta m1 using (id_miasta)
join (przystanki p2 join miasta m2 using (id_miasta))
 using (id_przystanku)
where id_przystanku=1230

Hash Join  (cost=13.00..30.10 rows=1 width=128)
  ->  Hash Join  (cost=6.74..21.02 rows=374 width=64)
        ->  Seq Scan on przystanki p2  (cost=0.00..7.74 rows=374 width=41)
        ->  Hash  (cost=5.99..5.99 rows=299 width=23)
              ->  Seq Scan on miasta m2  (cost=0.00..5.99 rows=299 width=23)
  ->  Hash  (cost=6.26..6.26 rows=1 width=64)
        ->  Nested Loop  (cost=0.00..6.26 rows=1 width=64)
              ->  Index Scan using przystanki_pkey on przystanki p1  (cost=0.00..3.14 rows=1 width=41)
              ->  Index Scan using miasta_pkey on miasta m1  (cost=0.00..3.10 rows=1 width=23)

Anyway - is it possible to expose table "przystanki alias p2" to get valid result?

The problem is similiar to my problem "sub-select with aggregate" dated on 2002-10-23 
and the answer (which doesn't satisfy me) is the same:
if we pass static values to "przystanki p2 join miasta m2", the query will work ok:
explain select * from
przystanki p1 join miasta m1 using (id_miasta)
cross join (przystanki p2 join miasta m2 using (id_miasta)) X
where p1.id_przystanku=1230 and X.id_przystanku=1230

Nested Loop  (cost=0.00..12.52 rows=1 width=128)
  ->  Nested Loop  (cost=0.00..6.26 rows=1 width=64)
        ->  Index Scan using przystanki_pkey on przystanki p1  (cost=0.00..3.14 rows=1 width=41)
        ->  Index Scan using miasta_pkey on miasta m1  (cost=0.00..3.10 rows=1 width=23)
  ->  Materialize  (cost=6.26..6.26 rows=1 width=64)
        ->  Nested Loop  (cost=0.00..6.26 rows=1 width=64)
              ->  Index Scan using przystanki_pkey on przystanki p2  (cost=0.00..3.14 rows=1 width=41)
              ->  Index Scan using miasta_pkey on miasta m2  (cost=0.00..3.10 rows=1 width=23)

Stephan - I have some problems with mail relay to you. 
Does my mail server have any open-relay problem, or something like this (213.25.37.66) ?

Regards,
Tomasz Myrta







view thread (23+ messages)  latest in thread

Message-ID: <3E2F130B.4030002@klaster.net>
Permalink:  ../3E2F130B.4030002@klaster.net/
Also on:    postgresql.org/message-id/3E2F130B.4030002@klaster.net

 · 

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: jasiek@klaster.net
  Subject: Re: To use a VIEW or not to use a View.....
  In-Reply-To: <3E2F130B.4030002@klaster.net>

* 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