Indexing for an OR clause that references two separate columns is a 
difficult task.

Does your use case tolerate an index on columns b and c only?

When I add this index to your example code:
create index IDX_TEST_4 on TEST(b,c);

I get this query plan:
SELECT
    TEST.A,
    TEST.A2,
    TEST.B,
    TEST.C
FROM PUBLIC.TEST
    /* PUBLIC.IDX_TEST_4: C = 'PP'
        AND B = '456'
     */
WHERE (C = 'PP')
    AND ((B = '456')
    AND ((A = '123')
    OR (A2 = '1234')));

On Tuesday, 28 July 2015 23:23:38 UTC+2, epsilon68 wrote:
>
>
> On Tue, Jul 28, 2015 at 8:53 AM, Noel Grandin <[email protected] 
> <javascript:>> wrote:
>
>>
>> Try doing this:
>>
>> select * from TEST where (a = '123' and b = '456' and c='PP') or 
>> (a2='1234' and b = '456' and c='PP');
>
>
> same result
>
> explain select * from TEST where (a = '123' and b = '456' and c='PP') or 
> (a2='1234' and b = '456' and c='PP');
> PLAN   
> <http://192.168.5.85:8082/query.do?jsessionid=1bfd56e4866af5b58a02a0da0e930c6e#>
> SELECT
>     TEST.A,
>     TEST.A2,
>     TEST.B,
>     TEST.C
> FROM PUBLIC.TEST
>     /* PUBLIC.TEST.tableScan */
> WHERE ((C = 'PP')
>     AND ((A = '123')
>     AND (B = '456')))
>     OR ((C = 'PP')
>     AND ((A2 = '1234')
>     AND (B = '456')))
>
>

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.

Reply via email to