HelpDatabase Reference › MH_Match

MH_Match Table

The MH_Match table is the primary table for MyHeritage DNA match data. Each row represents one DNA match for one of your test kits — the matched person’s identifiers, shared-DNA totals, tree summary, biographical details, and per-stage gather timestamps.

Gathering status: MyHeritage gathering is currently unavailable in the Client and is expected to return in a future update. This page documents the schema as it exists so you can work with data already in your database. Columns that the current code does not assign are noted as such below.

Match GUID Structure

Every MyHeritage match has a long guid in the form dnamatch-D-[testid]-D-[matchid] — the “D-” prefixes are part of the IDs themselves. The Client splits this string into two halves: the testid (your kit’s portion) and the matchid (the matched person’s portion). These two derived columns are what the rest of the MyHeritage tables join against.

Column Reference

Identifiers

ColumnTypeDescription
Idint (PK)Auto-incrementing primary key
kitIdintThe DNA_Kits row id of your kit that this match belongs to
guidstringThe full match GUID (dnamatch-D-[testid]-D-[matchid]). Unique index.
testidstringYour kit’s portion of the GUID (begins with “D-”), parsed from guid. Indexed.
matchidstringThe matched person’s portion of the GUID (begins with “D-”), parsed from guid. Indexed.
namestringMatch’s full display name
first_namestringMatch’s first name (set to “<private>” when the name is private)
last_namestringMatch’s last name (derived from the full name with the first name removed)
creatoridstringID of the tree/site creator on MyHeritage
contactstringContact identifier. Not assigned by the current gather code; reserved.
managerstringName of the tree/site creator (kit manager)
contact_managerstringTree/site creator ID (same source as creatorid)

Shared DNA

ColumnTypeDescription
totalCMdecimalTotal length of shared segments in centimorgans
percent_shareddecimalPercentage of shared DNA between you and the match
num_segmentsintNumber of shared DNA segments
largestCMdecimalLength of the largest shared segment in centimorgans

Tree Summary

ColumnTypeDescription
has_treeboolTrue if the match has a tree (tree size > 0 or a tree URL is present)
tree_sizeintNumber of individuals in the match’s tree
tree_urlstringURL of the match’s tree. Indexed; joins to MH_Tree.treeurl.
person_urlstringLink to the match’s individual node within their pedigree tree
smart_matchesintSmartMatches count. The current code always stores 0.
shared_surnamesstringComma-joined list of common-ancestor surnames reported for the match
surnamesstringMatch surnames. The current code stores an empty string.

Biographical

ColumnTypeDescription
agestringAge or age group of the match (years if available, otherwise a group label)
birth_placestringBirth place, from the match’s associated individual
genderstringMatch’s gender
countrystringMatch’s country (falls back to the tree creator’s country when blank)
statusstringMatch status. Not assigned by the current gather code; reserved.
estimated_relationshipstringEstimated/refined relationship to you (e.g. “2nd–3rd cousin”)
notesstringFree-text notes. The current code stores an empty string.

Gather Tracking

ColumnTypeDescription
CreatedDatestringRecord creation date. Preserved across re-gathers; not assigned on insert by the current code.
icwRunDatestringDate In-Common-With (shared matches) data was last gathered for this match
icwcMlowdecimalLowest shared-cM threshold used during the ICW run for this match
triagRunDatestringDate triangulation data was last gathered for this match
treeRunDatestringDate tree data was last gathered for this match
chromoRunDatestringDate chromosome/segment data was last gathered for this match
gmUploadDatestringDate the match was uploaded to GEDmatch. Not assigned by the current gather code; reserved.
match_detail_urlstringMyHeritage link to the match detail page
GF_SyncstringGedcomFriends sync timestamp; set when the row has been synced.

How It’s Populated

Rows are written by AddMH_Match, keyed on guid:

  • Match list gather — iterates each match returned by MyHeritage, parses the guid into testid and matchid, and fills the identifier, shared-DNA, tree-summary, and biographical columns. Name data is taken in priority order from the member, associated individual, then submitter records.
  • Upsert behavior — if a row with the same guid already exists, it is updated in place. The existing CreatedDate, icwRunDate, icwcMlow, treeRunDate, chromoRunDate, and triagRunDate values are carried forward so later gather stages are not lost.
  • Run-date stamps — the per-stage timestamps (icwRunDate, chromoRunDate, treeRunDate, triagRunDate, icwcMlow) are set by dedicated update routines as each follow-on gather stage completes for the match.

Related Tables

  • MH_ICW — In-Common-With pairs, joined on matchid via id1/id2.
  • MH_Chromo — shared chromosome segments, joined on testid/matchid via guid1/guid2.
  • MH_Triangulate — triangulated segments for a kit and a pair of matches.
  • MH_Tree — tree metadata, joined on tree_url = treeurl.
  • MH_Ancestors — tree individuals, joined through MH_Tree.
  • DNA_Kits — the kit referenced by kitId.