Class TransformDistinctToReduced

  • All Implemented Interfaces:

    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:

    • Uses both ORDER BY and DISTINCT on the same level of the query
    • There is a fixed list of variables to project i.e. not SELECT *
    • ORDER BY conditions cover all the projected variables prior to the use of any other variables

    Related Optimizations

    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.