A computer-implemented method of processing a query, the method comprising: obtaining a columnstore comprising a plurality of columns and a plurality of rows, wherein each of the plurality of columns is segmented into a plurality of segments, wherein each segment of the respective column comprises a plurality of rows; receiving a query comprising a first parameter and a second parameter; determining a first key corresponding to the first parameter; identifying a mapping structure, from a first plurality of mapping structures, relating to said first key, wherein each mapping structure corresponds to a respective segment of the columnstore; interrogating the identified mapping structure to determine a value corresponding to the first key, wherein the value identifies an entry of an index table of a first plurality of index tables that corresponds to the respective segment, wherein the identified entry of the index table identifies a row of the respective segment of the columnstore relating to the first parameter; determining that the second parameter is less selective than the first parameter; determining a second key relating to the second parameter; identifying a further mapping structure, from a second plurality of mapping structures, relating to said second key, wherein each mapping structure of the second plurality of mapping structures corresponds to a respective segment of the columnstore; interrogating the identified further mapping structure to determine a further value corresponding to the second key, wherein the further value identifies an entry of a further index table of a second plurality of index tables that corresponds to the respective segment, wherein the entry of the further index table identifies a row of the respective segment of the columnstore relating to the second parameter; comparing the identified values relating to the first and second parameters; identifying one or more intersections of the identified values based on the comparison; and retrieving data relating to the first parameter and the second parameter from the data source based on the one or more intersections. obtaining a columnstore comprising a plurality of columns and a plurality of rows, wherein each of the plurality of columns is segmented into a plurality of segments, wherein each segment of the respective column comprises a plurality of rows; receiving a query comprising a first parameter and a second parameter; determining a first key corresponding to the first parameter; identifying a mapping structure, from a first plurality of mapping structures, relating to said first key, wherein each mapping structure corresponds to a respective segment of the columnstore; interrogating the identified mapping structure to determine a value corresponding to the first key, wherein the value identifies an entry of an index table of a first plurality of index tables that corresponds to the respective segment, wherein the identified entry of the index table identifies a row of the respective segment of the columnstore relating to the first parameter; determining that the second parameter is less selective than the first parameter; determining a second key relating to the second parameter; identifying a further mapping structure, from a second plurality of mapping structures, relating to said second key, wherein each mapping structure of the second plurality of mapping structures corresponds to a respective segment of the columnstore; interrogating the identified further mapping structure to determine a further value corresponding to the second key, wherein the further value identifies an entry of a further index table of a second plurality of index tables that corresponds to the respective segment, wherein the entry of the further index table identifies a row of the respective segment of the columnstore relating to the second parameter; comparing the identified values relating to the first and second parameters; identifying one or more intersections of the identified values based on the comparison; and retrieving data relating to the first parameter and the second parameter from the data source based on the one or more intersections.