1. A computer implemented method to join records from plurality of database tables, the method comprising: receiving, by at least one processor, a set of at least three database tables stored in at least one first memory, and a set of join conditions on a set S of join attributes; initializing, by the at least one processor and in at least one second memory, a scope C to empty; selecting, by the at least one processor, join attribute A from an ordered sequence S.sub.0 of the join attributes, wherein the join attribute A is the first in the ordered sequence S.sub.0; identifying, by the at least one processor, tables in the set of tables that include the join attribute A; iterating, by the at least one processor, through each of the identified tables in join attribute A order, the iterating based on a tree index structure held in at least one third memory for each of the identified tables where an index key includes all join attributes in the identified table in S.sub.0 order, and wherein the iterating includes seeking subsequent rows in each of the identified tables using the tree index structure, the at least one third memory having faster access times than the at least one first memory; for each matched value v of the join attribute located during the iterating, creating, by the at least one processor and in the at least one second memory, a new scope C.sub.v by appending “A=v” to the scope C; and eliminating, by the at least one processor, the join attribute A from the ordered sequence S.sub.0; in response to S.sub.0 being empty, outputting, by the at least one processor, a tuple corresponding to the scope C.sub.v for each v; and in response to S.sub.0 containing a next join attribute, for each scope C.sub.v, setting, by the at least one processor, C to C.sub.v selecting the next join attribute as the join attribute A for recursively invoking the identifying, creating, iterating, appending, outputting and recursively invoking.