HelpDatabase Reference › Ancestry_matchDetail

Ancestry_matchDetail Table

The Ancestry_matchDetail table holds a small set of supplemental per-match facts that come from a match’s detail/compare page rather than from the match list: the number of shared DNA segments, the year the match became a member, and the user ID of the account that administers the match’s test. There is one row per testGuid + matchGuid pair (the kit you are viewing from, and the match).

Role in the database: This is a companion table to Ancestry_matchGroups. It is read by the report and export queries as a fallback source — sharedSegments is used only when matchGroups.sharedSegment is missing, and matchTestAdminUcdmId is used to build the match’s profile URL when no managed user id is available from Ancestry_MatchProfile. Older databases are the main place these rows are found.

Column Reference

ColumnTypeSourceDescription
Idint (PK)AutoAuto-incrementing primary key
testGuidstringMatch CompareThe test kit GUID (your kit). Uppercased during migration.
matchGuidstringMatch CompareThe matched person’s GUID. Uppercased during migration. A unique index covers testGuid + matchGuid.
sharedSegmentsintMatch CompareNumber of shared DNA segments for this match. Used in reports as a fallback when matchGroups.sharedSegment is 0.
matchMemberSinceYearstringMatch CompareYear the match became an A* member. Exported as the “member since” value.
matchTestAdminUcdmIdstringMatch CompareUser ID of the account that administers the match’s test. Used to build the match’s profile URL when no managed user id is present in Ancestry_MatchProfile.
created_datestringAppWhen the row was created
syncstringAppSync status flag. Set to “0” on insert.

How It’s Populated

Rows are written by the match-detail insert routine, which is fed from a match’s detail/compare page. The write is insert-once: before inserting, it checks whether a row already exists for the same testGuid + matchGuid pair, and if one does it returns without writing. A new row is given sync = “0” and inserted. Existing rows are therefore never updated in place by this routine — the first value captured for a match is the value that stays.

In current gather builds, the shared-segment count is captured directly onto Ancestry_matchGroups.sharedSegment from the relationship data, so this table is most useful for older databases where the segment count and member-since year were stored here. The report queries account for both cases by reading from matchGroups first and falling back to matchDetail.

Related Tables

  • Ancestry_matchGroups — the primary match table. Joined on testGuid + matchGuid; its sharedSegment takes precedence over this table’s sharedSegments.
  • Ancestry_MatchProfile — per-match profile data (name, managed name, photo). Its managedUcdmid takes precedence over this table’s matchTestAdminUcdmId when building the profile URL.
  • Ancestry_RelationshipPredictions — detailed relationship predictions from the match list’s relationship data.