Relationship performance and indexing
ExpertEnsure relationships use indexed fields, understand when FileMaker creates and uses indexes, and avoid performance traps in complex graphs.
What you'll learn
- Which fields can be indexed and which cannot
- How to verify that a relationship is using an indexed match field
- Common relationship patterns that kill performance at scale
A FileMaker relationship performs a lookup against the related table whenever a related field is accessed. If the match field on the related side is indexed, this lookup is fast. Without an index, FileMaker scans every record. In large solutions, poorly indexed relationships are the most common source of unexplained slowness.
What can and cannot be indexed
Text, number, date, time, and timestamp fields can be indexed. Calculated fields can be indexed only if stored. Unstored calculations, global fields, and summary fields cannot be indexed. The relationship performs best when both match fields are indexed.
// Indexable match field examples: Contacts::id // number, stored, indexed ✓ Invoices::ClientId // number, stored, indexed ✓ // Unindexable match field examples: Invoices::DaysOld // unstored calc (uses Get(CurrentDate)) ✗ Globals::gFilter // global field ✗ Contact::FullName (if unstored calc) ✗
Sign in to track your progress and pick up where you left off.
Sign in to FM Dojo