Patent ID: 7890495

Claim:
An apparatus, comprising: at least one processor physically residing within a computer system; and program code configured to be executed by the processor to execute a query that evaluates one or more records of a table according to predetermined selection criteria by: optimizing a query plan for the query by labeling the query as a candidate for dynamic bitmap updating, where optimizing the query plan for the query by labeling the query as a candidate query for dynamic bitmap updating further comprises before initializing a bitmap and starting a first primary task and a second background task, determining if the query is labeled as the candidate query for dynamic bitmap updating; and when the query is labeled as the candidate query for dynamic bitmap updating then executing the steps of: initializing a bitmap having a plurality of elements, each element of the bitmap corresponding to a record of the table, and each element initialized to an active value; running the first primary task that individually retrieves each of one or more records from storage according to whether a corresponding element of the bitmap has an active value; running, concurrently with the first primary task, the second background task that executes a same query as the first primary task and that updates the bitmap by setting an inactive value to the element of the bitmap corresponding to any record that does not satisfy at least a portion of the selection criteria, wherein running the second background task includes: scanning a column of the table using an index built over the column, the portion of the selection criteria relating to record values within the column; determining a set of records whose record values within the column do not satisfy the portion of the selection criteria; and concurrently with the first primary task individually retrieving records from the storage having corresponding active value bitmap elements, changing the corresponding bitmap element to an inactive value for each record within the set of records; and continuing to run the first primary task until all records from the table, having a corresponding active value bitmap element, have been retrieved from the storage, including accessing the bitmap in the first primary task before at least one element is set to an inactive value by the second background task to determine whether to retrieve a record from the storage.