A computer implemented method for generating and searching an archive of transaction records, wherein each transaction record comprises values for each of a plurality of data fields at least one of which relates to time, the method comprising the steps of: (i) receiving a plurality of transaction records; (ii) collating the received transaction records into a plurality of groups of transaction records according to predetermined grouping criteria; (iii) generating one or more first level indexes to the plurality of groups of transaction records, wherein each of the one or more first level indexes is based upon one of the data fields associated with the transaction records, and wherein the one or more first level indexes includes data sufficient only to identify one or more groups of transaction records; (iv) applying a selected compression algorithm to compress each of the plurality of groups collated at step (ii); and (v) storing the one or more first level indexes and the compressed groups of transaction records, wherein said predetermined grouping criteria are defined according to the selected compression algorithm and to the content of the received transaction records, so that at least a predetermined quantity of data is collated to form a group of records, thereby to achieve a predetermined level of compression performance at step (iv); (vi) receiving search criteria for the retrieval of transaction records within the compressed groups, the search criteria defining a value or a value range for one or more data fields represented in the transaction records, including at least one data field represented in the one or more first level indexes; (vii) using one of the one or more stored first level indexes generated in respect of the stored compressed groups of transaction records to select one or more compressed groups of transaction records of relevance to the received search criteria; (viii) decompressing the selected one or more groups of transaction records; (ix) identifying one or more of individual transaction records within the decompressed one or more groups of transaction records whose content matches the received search criteria, wherein step (ix) comprises generating one or more second level indexes to the individual transaction records contained within the decompressed transaction records and using the one or more second level indexes to identify and retrieve the one or more individual transaction records matching the received search criteria. (i) receiving a plurality of transaction records; (ii) collating the received transaction records into a plurality of groups of transaction records according to predetermined grouping criteria; (iii) generating one or more first level indexes to the plurality of groups of transaction records, wherein each of the one or more first level indexes is based upon one of the data fields associated with the transaction records, and wherein the one or more first level indexes includes data sufficient only to identify one or more groups of transaction records; (iv) applying a selected compression algorithm to compress each of the plurality of groups collated at step (ii); and (v) storing the one or more first level indexes and the compressed groups of transaction records, wherein said predetermined grouping criteria are defined according to the selected compression algorithm and to the content of the received transaction records, so that at least a predetermined quantity of data is collated to form a group of records, thereby to achieve a predetermined level of compression performance at step (iv); (vi) receiving search criteria for the retrieval of transaction records within the compressed groups, the search criteria defining a value or a value range for one or more data fields represented in the transaction records, including at least one data field represented in the one or more first level indexes; (vii) using one of the one or more stored first level indexes generated in respect of the stored compressed groups of transaction records to select one or more compressed groups of transaction records of relevance to the received search criteria; (viii) decompressing the selected one or more groups of transaction records; (ix) identifying one or more of individual transaction records within the decompressed one or more groups of transaction records whose content matches the received search criteria, wherein step (ix) comprises generating one or more second level indexes to the individual transaction records contained within the decompressed transaction records and using the one or more second level indexes to identify and retrieve the one or more individual transaction records matching the received search criteria.