directory-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alex Karasulu <akaras...@apache.org>
Subject Re: Is it faster/better to include one objectclass or all in query?
Date Wed, 14 Mar 2012 16:09:01 GMT
Emm sorry if I repeated what you said here ...

On Wed, Mar 14, 2012 at 5:03 PM, Emmanuel Lécharny <elecharny@gmail.com>wrote:

> Le 3/14/12 3:51 PM, Carlo.Accorsi@ibs-ag.com a écrit :
>
>  Hi, when searching for a user having this objectclass hierarchy
>>
>> top
>>  |_person
>>          |_organizationalPerson
>>                     |_inetOrgPerson
>>
>> and uid = 'jsmith'
>>
>> Which query would be less expensive or better/faster?  Thanks!
>>
>> (&
>>    (objectclass=inetOrgPerson)
>>    (uid=jsmith)
>> )
>>
>> OR
>>
>> (&
>>                 (&(objectclass=top)
>>                 (objectclass=person)
>> (objectclass= organizationalPerson)
>> (objectclass=inetOrgPerson))
>> (uid=jsmith)
>> )
>>
>>
>>
>>  It depends on the number of entries selected by each of the filters. The
> way the filtering works - for an AND operation at least - is that we first
> evaluate the number of elements returned by each single filter, then we
> pick the smallest one and we process the search using this filter.
>
> For instance, in your case, we will have :
>
> (objectclass=top) ->  matches all the entries (obviously)
> (objectclass=person) ->  matches 1000 entries
> (objectclass= organizationalPerson) ->  matches 100 entries (less than for
> the previous filter because organizationalPerson has person as a superior)
> (objectclass=inetOrgPerson) ->  matches 10 entries (same raisonning than
> upper)
>
> now,
>  - if (uid=jsmith) matches 55 entries, then we will use the
> (objectclass=inetOrgPerson) filter
>  - if (uid=jsmith) matches 7 entries, then we will use this filter
>
> at the end, we will browse 10 or 7 entries, depending on the number of
> matched entries considering the filter.
>
> If we take your first filter
> (&
>   (objectclass=inetOrgPerson)
>   (uid=jsmith)
> )
> it's even simpler, as we don't have to evaluate the hierarchy of
> ObjectClasses.
>
> End of the day : no need to pile up the atomic filters in your request,
> just use those that are the most discriminant.
>
> Last, not least, the 'cost' difference will be minimal anyway, as the
> evaluation is a pretty fast operation compared to pulling entries from the
> backend to return them. You will see no difference.
>
> The best thing to do is to have the correct index set depending on the
> requests you will submit.
>
>
>
> --
> Regards,
> Cordialement,
> Emmanuel Lécharny
> www.iktek.com
>
>


-- 
Best Regards,
-- Alex

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message