[ 
https://issues.apache.org/jira/browse/IGNITE-6085?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16255155#comment-16255155
 ] 

Roman Kondakov commented on IGNITE-6085:
----------------------------------------

This problem occurs only with the OR condition in ON clause.  If you change 
condition to AND this query works well. The problem could be in the method 

{code:java}
public void createIndexConditions(Session session, TableFilter filter) {
        if (andOrType == AND) {
            left.createIndexConditions(session, filter);
            right.createIndexConditions(session, filter);
        }
    }
{code}

in ConditionAndOr class. I asked a question about it in H2/issues: 
https://github.com/h2database/h2database/issues/670. Waiting for a response now.


> SQL: JOIN with multiple conditions is extremely slow
> ----------------------------------------------------
>
>                 Key: IGNITE-6085
>                 URL: https://issues.apache.org/jira/browse/IGNITE-6085
>             Project: Ignite
>          Issue Type: Task
>          Components: sql
>    Affects Versions: 2.1
>            Reporter: Vladimir Ozerov
>            Assignee: Roman Kondakov
>              Labels: performance
>             Fix For: 2.4
>
>
> Consider the following query:
> {code}
> SELECT ... FROM A a
>     INNER JOIN B b ON b.id = a.foreign_id1 OR b.id = a.foreign_id2
> {code}
> In this case H2 cannot use indexes on {{foreign_id1}} or {{foreign_id2}} 
> columns and query execution takes extraordinary time. Known workaround for a 
> problem is to apply multiple JOINs, e.g.:
> {code}
> SELECT ... FROM A a
>     LEFT OUTER JOIN B b1 ON b1.id = a.foreign_id1 
>     LEFT OUTER JOIN B b2 ON b2.id = a.foreign_id2
> WHERE b1.id IS NOT NULL AND b2.id IS NOT NULL
> {code}
> On a single real-world scenario it improved exeution time by a factor of 500 
> (from 4s to 80ms).
> Something is terribly wrong here. Probably, H2 cannot perform necessary query 
> re-write, or cannot understand how to use index. Let's find a way to fix that.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to