Database system query optimizers use several techniques such as histograms
and sampling to estimate the result sizes of operators and sub-plans
(operator trees) and the number of distinct values in their outputs.
Instead of estimates, the invention uses the exact actual values of the
result sizes and the number of distinct values in the outputs of
sub-plans encountered by the optimizer. This is achieved by optimizing
the query in phases. In each phase, newly encountered sub-plans are
recorded for which result size and/or distinct value estimates are
required. These sub-plans are executed at the end of the phase to
determine their actual result sizes and the actual number of distinct
values in their outputs. In subsequent phases, the optimizer uses these
actual values when it encounters the same sub-plan again.
Optimizers van de het systeemvraag van het gegevensbestand gebruiken verscheidene technieken zoals histogrammen en bemonstering om de resultaatgrootte van exploitanten en sub-plannen (exploitantbomen) en het aantal verschillende waarden in hun output te schatten. In plaats van ramingen, gebruikt de uitvinding de nauwkeurige daadwerkelijke waarden van de resultaatgrootte en het aantal verschillende waarden in de output van sub-plannen die door optimizer worden ontmoet. Dit wordt bereikt door de vraag in fasen te optimaliseren. In elke fase, ontmoette onlangs sub-plannen worden geregistreerd waarvoor de resultaatgrootte en/of de verschillende waarderamingen worden vereist. Deze sub-plannen worden uitgevoerd aan het eind van de fase om hun daadwerkelijke resultaatgrootte en daadwerkelijk aantal verschillende waarden in hun output te bepalen. In verdere fasen, gebruikt optimizer deze daadwerkelijke waarden wanneer het het zelfde sub-plan opnieuw ontmoet.