| From: | Daniel Lopez <ridruejo(at)atm9(dot)com(dot)dtu(dot)dk> |
|---|---|
| To: | maillist(at)candle(dot)pha(dot)pa(dot)us (Bruce Momjian) |
| Cc: | rison(at)biochemistry(dot)ucl(dot)ac(dot)uk, tgl(at)sss(dot)pgh(dot)pa(dot)us, pgsql-sql(at)hub(dot)org |
| Subject: | Re: [SQL] Subselect performance |
| Date: | 1999-09-21 22:54:40 |
| Message-ID: | 199909212254.AAA13731@atm9.com.dtu.dk |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-sql |
> It is not your fault. We frequently get reports of this type, and the
> behavior of the subquery is very non-intuitive. You would think that a
> subquery and a join would have the same performance, but because of the
> limitation of subqueries as being nested loop joined, this is not the
> case, and subqueries are slower. We tell people to rewrite their query
> as EXISTS, but by the time we tell them that, they have already spent
> much time trying to figure out why the query is so slow, and I am sure
> many people don't even know about the EXISTS workaround.
You are right: I spend some time scratching my head, then some time
searching the mailing lists and I finally made the query with a EXISTS,
which works great for me :) Thanks
Can this be a candidate to include in the FAQ?
On the same idea, is there any good document out there with all the SQL
"recipes" or common practice for things like : "Give me all the rows which
have this value in this column more than once, etc"
I do it with:
select my_index, count(my_index) from my_table group by my_index having
count(my_index) > 1;
But this is a common query and would be interested in knowing which is the
commonly accepted way of doing this
Regards
Daniel
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Daniel Lopez | 1999-09-21 23:18:44 | Book on SQL |
| Previous Message | raptor | 1999-09-21 21:56:58 | OID & indexes. |