public class TransformDistinctToReduced extends TransformCopy
Transforms generic DISTINCT
plus ORDER BY
combinations to
REDUCED
plus ORDER BY
which typically gives better
performance and memory consumption because engines have to keep less data
in-memory to evaluate it.
As with most optimizations this is only applied when it is safe to do so. The criteria for being safe to do so are as follows:
ORDER BY
and DISTINCT
on the same level of the
querySELECT *
ORDER BY
conditions cover all the projected variables prior to
the use of any other variables
See also TransformOrderByDistinctApplication
which is a better
optimization for these kinds of queries but only applies to a more limited range
of queries. Where possible that optimization is applied in preference to this
one.
TransformTopN
covers the case of DISTINCT
plus
ORDER BY
where there is also a LIMIT
. Where possible that
optimization is applied in preference to either this or
TransformOrderByDistinctApplication
.
COPY_ALWAYS, COPY_ONLY_ON_CHANGE
Constructor and Description |
---|
TransformDistinctToReduced() |
Modifier and Type | Method and Description |
---|---|
Op |
transform(OpDistinct opDistinct,
Op subOp) |
Op |
transform1(OpDistinct opDistinct,
Op subOp) |
transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform, transform
public Op transform1(OpDistinct opDistinct, Op subOp)
public Op transform(OpDistinct opDistinct, Op subOp)
transform
in interface Transform
transform
in class TransformCopy
Licenced under the Apache License, Version 2.0