A computer-implemented method for partitioning data records among a plurality of recipient processing entities, including: processing a first set of original records (700; 501) by a first processing entity to generate a second set of records that includes the original records and at least one copy of each original record, wherein the processing of each of at least some of the original records includes: generating the at least one copy (402; 502) of the respective original record, wherein at least one segment value will be shared by two records for every allowed variation of a set of predetermined allowed variations between first data values in a respective first field of the two records including substitution of any single character as an allowed variation, and associating a first segment value (402; 503) with the original record and associating a second segment value with the copy, wherein the first segment value corresponds to a first sequence of characters from a first data value of the first field taken from a first set of positions of the characters in said first data value, and the second segment value corresponds to a second sequence of characters from said first data value taken from a second set of positions of the characters in said first data value of the original record, the first set of positions being non-overlapping with the second set of positions, and partitioning the second set of records (404; 504) among a plurality of recipient processing entities, wherein every record having the first segment value is sent to one processing entity and wherein every record having the second segment value is sent to another processing entity, and, at each recipient processing entity, performing an operation based on one or more data values of the records received at the recipient processing entity to generate results. processing a first set of original records (700; 501) by a first processing entity to generate a second set of records that includes the original records and at least one copy of each original record, wherein the processing of each of at least some of the original records includes: generating the at least one copy (402; 502) of the respective original record, wherein at least one segment value will be shared by two records for every allowed variation of a set of predetermined allowed variations between first data values in a respective first field of the two records including substitution of any single character as an allowed variation, and associating a first segment value (402; 503) with the original record and associating a second segment value with the copy, wherein the first segment value corresponds to a first sequence of characters from a first data value of the first field taken from a first set of positions of the characters in said first data value, and the second segment value corresponds to a second sequence of characters from said first data value taken from a second set of positions of the characters in said first data value of the original record, the first set of positions being non-overlapping with the second set of positions, and partitioning the second set of records (404; 504) among a plurality of recipient processing entities, wherein every record having the first segment value is sent to one processing entity and wherein every record having the second segment value is sent to another processing entity, and, at each recipient processing entity, performing an operation based on one or more data values of the records received at the recipient processing entity to generate results. generating the at least one copy (402; 502) of the respective original record, wherein at least one segment value will be shared by two records for every allowed variation of a set of predetermined allowed variations between first data values in a respective first field of the two records including substitution of any single character as an allowed variation, and associating a first segment value (402; 503) with the original record and associating a second segment value with the copy, wherein the first segment value corresponds to a first sequence of characters from a first data value of the first field taken from a first set of positions of the characters in said first data value, and the second segment value corresponds to a second sequence of characters from said first data value taken from a second set of positions of the characters in said first data value of the original record, the first set of positions being non-overlapping with the second set of positions, and partitioning the second set of records (404; 504) among a plurality of recipient processing entities, wherein every record having the first segment value is sent to one processing entity and wherein every record having the second segment value is sent to another processing entity, and, at each recipient processing entity, performing an operation based on one or more data values of the records received at the recipient processing entity to generate results.