[ http://issues.apache.org/jira/browse/DERBY-754?page=all ]
A B closed DERBY-754. --------------------- > Push ON clause predicates down when optimizing SELECT queries. > -------------------------------------------------------------- > > Key: DERBY-754 > URL: http://issues.apache.org/jira/browse/DERBY-754 > Project: Derby > Issue Type: Improvement > Components: Performance > Affects Versions: 10.2.0.0, 10.1.2.0, 10.1.2.1 > Reporter: A B > Attachments: d754_draft.patch > > > In cases where a SELECT subquery occurs as one of the operands to a Join, it > is sometimes beneficial to push join predicates down to the subquery, which > allows the optimizer to find a better access path for the subquery and thus > can improve query performance. > For example, take the following query: > SELECT t1.a, t1.b, temp.c > FROM t1 > LEFT OUTER JOIN ( > SELECT c,d > FROM t2 > ) as temp > ON > t1.a = temp.d > and temp.d = 8 > ; > Currently, when optimizing the inner SELECT query, Derby will only pass the > inner SELECT's WHERE predicates to the optimizer--the outer ON predicates are > ignored. Thus, in this case, the optimizer will have no predicates to work > with and so will do a table scan on t2. > If, however, Derby were to push the "temp.d = 8" predicate down into the > inner SELECT query, the optimizer could use that predicate to make a smarter > decision. For example, if a primary key existed on column "d" in T2, the > optimizer could use that and then choose to do an index/hash scan when > reading t2 (instead of a table scan). > Not only does can this kind of "pushing" lead to faster reading of tables, > but in some cases where the predicate being pushed references two tables, it > can also influence the optimizer's choice of join strategy, which can in turn > lead to improved performance. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira