Kort uppdatering då detta ämne kan vara av aktualitet.
Jag har precis avslutat första versionen av en re-write av en existerade lösning från ren FileMaker med relationer sorterade på icke-indexerbara beräknade fält till en ExecuteSQL-baserad modell där jag hämtar en sorterad array av id-värden. Pga det mycket specifika gränssnittet var dessa de två bästa/minst dåliga alternativen.
Än så länge ser resultatet mycket lyckat ut, även om jag för vissa fall har 4-5 JOIN och en del rätt komplicerade SELECT (ex.vis en radda dubbla LIKE med wildcards). Mycket snabbare och inga konstiga, halvt spontana "omsorteringar" när i relation/sorteringsordning använda fält ändras.
Ett trick som fick det att fungera riktigt bra var att jag övergav "klassisk" virtual list där man arbetar med icke-lagrade beräkningar som hämtar värden från array för en loop som sätter fältvärden för ett indexerat fält för det antal relaterade poster man kan se på skärmen (allt efter skärmstorlek - 65 poster på min iMac 27").
En annan sak jag är rätt nöjd med är ett sätt att sortera poster med "vanlig" FileMaker sortering och vara säker på att få exakt samma sorteringsordning. Istället för att försöka programmera ett otal kombinationer av sortering på indexerade fält på ett sätt som följer sorteringsordningen i min Id-array, kom jag på att, eftersom mina Id-värden alltid är 13 tecken långa (ISBN), kan jag helt enkelt använda ett icke-lagrat beräkningsfält med
1 Position ( $$ISBN_array ; Tabell::ISBN ; 1 ; 1 )
. Denna enkla formel utvärderas riktigt snabbt i synnerhet i de "vanliga" fallen där man har upp till några hundra eller högst ett par tusen värden i $$ISBN_array.