1. A computer-implemented method comprising steps of: receiving a query that specifies at least that (a) data are to be selected from at least a first table and a second table, (b) that data selected from the tables are to be filtered based on values contained in a first column of the first table, and (c) that data selected from the tables are to be filtered based on values contained in a second column of the second table; accessing a first index that has been built on the first table to obtain a first set of index entry columns that also contain row identifiers; filtering the first set based on values from the first index that correspond to values in the first column; accessing a second index that has been built on the second table to obtain a second set of index entry columns that also contain row identifiers; filtering the second set based on values from the second index that correspond to values in the second column; joining and filtering the second set to the first set based on a join column that is present in both the first set and the second set; after filtering the first and second sets, selecting (a) a first group of rows from the first table based on row identifiers in the first set and (b) a second group of rows from the second table based on row identifiers in the second set, thereby producing an intermediate result; joining both the first group of rows and the second group of rows with the intermediate result to produce a result set; and storing the result set in a computer-readable memory; wherein the steps are performed by one or more special-purpose computing devices.