Class TransformDistinctToReduced

java.lang.Object
org.apache.jena.sparql.algebra.TransformCopy
org.apache.jena.sparql.algebra.optimize.TransformDistinctToReduced
All Implemented Interfaces:
Transform

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.