1. A method of storing and retrieving data in a data base system comprising the steps of: providing a plurality of data tables, each data table including a plurality of records; identifying each data table by assigning a unique record index value to each data table; assigning each record within a data table a record serial number unique to that record within the data table; dividing the record serial numbers of each data table into ranges, each range including a predetermined number of record serial numbers, and each range being assigned a consecutive range value; dividing the records in each data table into a plurality of fields wherein each field within a data table is identified by a field index value and wherein each field within a data table contains data values of a selected type; providing a plurality of inverted list tables, each inverted list table being associated with a respective one of the data tables, including the steps of: creating a plurality of keys, each key being associated with a particular field and representing the occurance of a particular data value in that field; providing one or more pointers associated with each key and representative of the record serial numbers of the records which contain the data value represented by the associated key, each pointer including a range value and a sparse array bit map representative of record serial numbers; identifying the records in a selected data table having a specified data value stored in a selected field, including the steps of: determining the key which is associated with the selected field and which represents the specified data value; and searching the inverted list table associated with the selected data table to find the determined key; and retrieving the data in the records represented by the pointers associated with the determined key.