Subject Re: MAKE 'EXECUTE STATEMENT' USE INDEX
Author Dmitry Yemanov
19.08.2015 14:29, 'Mr. John' wrote:

> This time,adding condition this way WHERE FIEL1=:F1 AND FIEL2=:F2 AND
> * (FIEL3=:F3 OR **:F3 IS NULL) * INTO .. DO ..
>
> is causing query to be much slower ...
>
> this WHERE FIEL1=:F1 AND FIEL2=:F2 AND * (FIEL3=:F3 **) * INTO .. DO ..
> takes *0.563s*

because all three index segments are used for the retrieval.

> but this takes *29.141s*
> WHERE FIEL1=:F1 AND FIEL2=:F2 AND * (FIEL3=:F3 OR **:F3 IS NULL) * INTO
> .. DO ..

because (FIEL3=:F3 OR :F3 IS NULL) prevents the third index segment from
being used, so only first two index segments are used for the retrieval.

This is absolutely expected.


Dmitry