[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: subinitial and subfinal indexes not working?

There is a default constant minimal length for the subinitial and subfinal indexes. I think it is set to either 2 or 3 by default and searches for prefixes less then that (such as words differing by one character or none at all) will be basically linear searches through entire database. This minimal length can be changed (can't remember what the constant is but it's in one of the files where the indexes are computed, you can find it if you are persistant enough:))) - set it to 1 and you will get pre/post indexes as short as a single char. This will potentially make insertion operations slower, your database bigger (and potentially binarily incompatible with previous database though i am not sure how they store the keys) - to be on the safe side rebuild database from LDIF. Searches for prefixes that do not exist still may take forever..who knows... --Ugen -----Original Message----- From: owner-openldap-devel@OpenLDAP.org [mailto:owner-openldap-devel@OpenLDAP.org]On Behalf Of Andreas I'm running an instance of openldap-2.0.27 and it seems that the subinitial and subfinal indexes are not working. All for searches correctly return the same 4 entries, but with varying degrees of speed (the database contains about 170k entries): # time ldapsearch cn="jose roberto silva" > /dev/null real 0m0.108s user 0m0.010s sys 0m0.000s # time ldapsearch cn="*jose roberto silva*" > /dev/null real 0m0.123s user 0m0.010s sys 0m0.010s cn is indexed as follows: index cn eq,subinitial,subany,subfinal I had "sub" earlier, same result. Now, the following two searches take minutes to complete: # time ldapsearch cn="*jose roberto silva" > /dev/null real 1m49.929s user 0m0.010s sys 0m0.010s # time ldapsearch cn="jose roberto silva*" > /dev/null real 1m49.940s user 0m0.020s sys 0m0.010s Seems there is a problem with the subinitial and subfinal indexes, any hints? I *think* this also happens with openldap-2.1.21, but I'll try again later just to be sure.