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

slow queries with long strings in filters



Hi list,

I've got an attribute that could contains very long strings (more than 150 chr).
It's a string made of small tokens separated by spaces and slashes :

departmentUID: BA/BAC ANDL/BAPZ IDF/GRPT YVLN/CIE GN ST GERM...

The attibute is indexed with pres,eq,sub

When I search for small substrings like (departmentUID=*/GRPT*) it's fast and ok.

When I search for a long subset of the string, the query is very long (many seconds) :
(departmentUID=BA/BAC ANDL/BAPZ IDF/GRPT YVLN/CIE GN ST*)

The more the string is long, the more the answer is slow.

I can use very complex filters (&((|()())(|()()))... and the answer is very fast, unless I use a long string in it.

The backend is BDB (berkeley 4.2)
Openldap is 2.2.26

Is this a BDB or an Openldap related issue ?
Using subinitial or subany in the index slap.conf parameter did not solve the problem.

I found only one post in the archives related to a server were any query string with more than 3 characters makes slow answers. He was told to adjust :
index_substr_if_minlen
index_substr_if_maxlen
index_substr_any_len
index_substr_any_step
But theses parameters are only available with openldap 2.3 and it doesn't seem to be exactly my problem (I've no differences between 2,3,4 or 5 characters query strings)

Thanks,
Sylvain.