Zabach, Elke wrote:

hello!

>>i am constructing a rather longish join where i want to 
>>select distinct 
>>rows only. however, i know that the join-rows i collect are distinct 
>>within the first two columns (it's a primary key of one of the join 
>>partners). many more columns are selected.

> Always the whole result will be tested for distinctness. There is no chance
> to tell 'only the first x columns plus column y and z should be checked' -->
> therefore no chance to provide this info to the optimizer.
> 
> But,
> maybe I did not understand your explanation correctly, but you mean
> that you do have a result like this (without DISTINCT)
> 
> c1  c2  c3    c4
> ---------------------
> a     b     1    2
> a     b     7    3
> f      s     2    4
> 
> and you want to say DISTINCTNESS for c1 and c2, no matter what the rest of
> the columns show? 
> No, that must be a misunderstanding.

misunderstanding. each row with the same c1/c2 has all other columns 
with the same values, too. those are the same rows. they are included in 
the resultset multiple times due to redundant conditions in the WHERE 
clause...

> Second try: if you know that two columns are distinct (the primary key) and
> you do have
> a 1 : 1 -join, then there is no need to say DISTINCT. 

mmmh. i join many tables but each table has a primary key that is the 
same as in the first join partner. however, no referential constraints 
are defined.

is there a way to tell how many columns the DISTINCT-logic is using? 
could it be part of the execution plan ?

> Just an idea (without really catching the problem): could it be helpful to
> use a FROM-select
> with DISTINCT for one table before joining it with the other (depends on the
> join 1:1, 1:n, n:m)?

i tried it: i created a DISTINCT from-select that created primary keys 
of the result set. i then made a join with that and all the other 
tables. it works as expected but the plan is more expensive. however, i 
did not check if it is more expensive than the outer DISTINCT.

thanks for any advice,
        Raimund
-- 
Raimund Jacob
                                                  \|/ ____ \|/
Pinuts Media+Science GmbH                        "@'/ ,. \`@"
Potsdamer Str. 96                                /_| \__/ |_\
D-10785 Berlin                                      \__U_/
http://www.pinuts.de/ voice: +49 30 590090313 fax: +49 30 590090390

_______________________________________________
sapdb.general mailing list
[EMAIL PROTECTED]
http://listserv.sap.com/mailman/listinfo/sapdb.general

Reply via email to