The MH_ICW table holds MyHeritage In-Common-With (shared match) relationships. Each row records that two people, id1 and id2, share DNA with each other, along with the size of that shared match.
| Column | Type | Description |
|---|---|---|
| Id | int (PK) | Auto-incrementing primary key |
| id1 | string | First person in the in-common pair (a matchid value from MH_Match) |
| id2 | string | Second person in the in-common pair (a matchid value from MH_Match) |
| totalCM | decimal | Total shared DNA in centimorgans between the two people |
| percent_shared | decimal | Percentage of shared DNA between the two people |
| num_segments | int | Number of shared segments. The current code stores 0. |
| triTotalCM | decimal | Total triangulated cM for the pair. Not assigned by the current gather code; left at its default (0). |
| triSegments | int | Count of triangulated/intersected segments for the pair |
| GF_Sync | string | GedcomFriends sync timestamp; set when the row has been synced. |
Rows are written by AddMH_ICW during the ICW gather stage, keyed on the id1/id2 pair. Each shared-match relationship is stored bidirectionally: the gather inserts one row as (id1, id2) and a second reversed row as (id2, id1) carrying the same cM, percentage, segment, and triangulation values. Unique indexes exist on both (id1, id2) and (id2, id1), so duplicate pairs are skipped. Both IDs are the matchid halves parsed from MyHeritage match GUIDs, which is what lets the table join back to MH_Match.
id1 and id2 both reference MH_Match.matchid.triSegments.