Join order optimizer improvements

Details

Detail name Value
Changelog Number 6463
Type Improvement
Status Resolved
Fix Versions Exasol 6.1.3
Resolution Date 2019-05-13

Background

The join order optimizer determines the types of joins as well as the order of joins in a pipeline. The optimizer uses cardinality estimates on basis of column statistics and a physical cost model to determine the costs of join orders.

In case of many joins, only a subset of the search space will be processed. The best join order can be missed in such cases.

Improvement

The join order optimizer has been improved in several ways

  • more precise selection of caching global joins over non-caching ones
  • better handling of computation imbalances in the pipeline
  • faster finishing of join order search in case of very many tables joined
  • improved multiple join attribute cardinality estimation

Although the above changes are supposed to generally improve query performance, it is possible that some queries take longer than before. This should be accepted with an improved average query duration in mind.

Workaround

The former optimizer behaviour can be reactivated using a database parameter.