Stephan Szabo wrote:
> On Tue, 21 Aug 2001, Joseph Shraibman wrote:
>
>
>>Thank you, I was missing the parens.
>>
>>If I do an explain I see:
>>
>>-> Index Scan using m_u_and_p_key on m (cost=0.00..3035.22 rows=1363 width=12)
>>
>>
>>even if I put a limit 1 on the select. Why is that?
>>
>
> Is that the inner query (on the exists) or the entire explain?
Just the inner query
>
> I guess it'd be useful to see the whole query and explain and maybe
> schema.
That's big and complicated. Can you reproduce this somewhere else?
Here is the whole explain:
Limit (cost=48.39..48.39 rows=1 width=70)
-> Sort (cost=48.39..48.39 rows=2 width=70)
-> Hash Join (cost=18.46..48.38 rows=2 width=70)
-> Index Scan using u_p_key on u (cost=0.00..27.66 rows=48 width=28)
-> Hash (cost=18.39..18.39 rows=28 width=42)
-> Seq Scan on d (cost=0.00..18.39 rows=28 width=42)
SubPlan
-> Nested Loop (cost=0.00..4.04 rows=1 width=20)
-> Index Scan using a_pkey on a (cost=0.00..2.01 rows=1
width=4)
-> Index Scan using p_pkey on pu (cost=0.00..2.02 rows=1
width=16)
-> Index Scan using m_u_and_p_key on m (cost=0.00..3035.22
rows=1363
width=44)
I tried to make a simple test case:
create table ta (a int);
create table tb (c int, b int);
insert into ta values (2);
insert into ta values (4);
insert into ta values (6);
insert into ta values (8);
insert into ta values (10);
insert into tb values (1,1);
insert into tb values (2,2);
insert into tb values (3,3);
insert into tb values (4,4);
vacuum analyze;
select c, b , exists(select a from ta where a = c) from tb;
explain select c, b , exists(select a from ta where a = c) from tb;
drop table ta;
drop table tb;
... but the data is so small it uses a seq scan:
Seq Scan on tb (cost=0.00..1.04 rows=4 width=8)
SubPlan
-> Seq Scan on ta (cost=0.00..1.06 rows=1 width=4)
>
>
>>Stephan Szabo wrote:
>>
>>>On Mon, 20 Aug 2001, Joseph Shraibman wrote:
>>>
>>>
>>>
>>>>I want to select a boolean if there exists a row in another table that matches
>this one.
>>>>So I did select ..., (select count(*) from table2 where ...) > 0 ...
>>>>but that count(*) was taking forever. I know there is a better way to do it, but
>whenever
>>>>I try to use EXISTS I get a syntax error. What is the proper way?
>>>>
>>>>
>>>Hmm, on current sources I can do:
>>>select ..., exists (select * from table2 where ...) from table1;
>>>
>>>I don't know if that's new though...
>>>
--
Joseph Shraibman
[EMAIL PROTECTED]
Increase signal to noise ratio. http://www.targabot.com
---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?
http://www.postgresql.org/search.mpl