A join optimizer and method for a relational database management system
including a data processor, a stored database, and a plurality of database
relations, wherein one or more of the relations are retrieved by the
processor by means of query commands by performing a plurality of join
operations on the relations, the system employing a general purpose
heuristic algorithm which excludes or defers Cartesian products as late in
the join sequence as possible, the method includes the steps of
determining, in association with the execution of, or preferably prior to
executing the general purpose algorithm, whether tables referenced in a
query command includes a hub table and at least two encoding tables
related to the hub table and, when the query command references a hub
table and at least two encoding tables, determining the best access plan
for the hub table, determining whether the best access plan utilizes an
index used to access the hub table and, if so, constructing a plan to join
the encoding tables as Cartesian products, constructing a plan to join the
hub table and the encoding tables and storing the plans in the data
structures of the optimizer for enumeration with other access plans
constructed by the optimizer.
Ein verbindenoptimierer und -methode für ein Managementsystem der relationalen Datenbasis einschließlich einen Computer, eine gespeicherte Datenbank und eine Mehrzahl der Datenbankrelationen, worin man oder mehr der Relationen durch den Prozessor mittels der Frage Befehle zurückgeholt werden, indem man eine Mehrzahl von durchführt, verbinden Betriebe auf den Relationen, das System einen universellen heuristischen Algorithmus einsetzend, der die kartesischen Produkte ausschließt oder aufschiebt, die in der verbindenreihenfolge so spät sind, wie möglich, die Methode einschließt die Schritte der Bestimmung, in Verbindung mit der Durchführung oder vorzugsweise vor der Durchführung des universellen Algorithmus, ob die Tabellen, die in einem Frage Befehl bezogen werden, miteinschließt eine Nabe Tabelle und mindestens zwei kodierentabellen bezogen auf dem Nabe Tabelle und, wenn der Frage Befehl eine Nabe Tabelle und mindestens zwei kodierentabellen bezieht und den besten Zugang Plan für die Nabe Tabelle feststellt und feststellt, ob der beste Zugang Plan einen Index verwendet, der verwendet wird, um die Nabe Tabelle und, wenn so, das Konstruieren eines Planes, um die kodierentabellen als kartesische Produkte zu verbinden, das Konstruieren eines Planes, um die Nabe Tabelle und die kodierentabellen zu verbinden und die Speicherung der Pläne in den Datenstrukturen des Optimierers für Aufzählung mit anderen Zugang Plänen zugänglich zu machen konstruiert durch den Optimierer.