local lnMax, lnMin, lnI, lnK, lnParent if not file('Parents.dbf') create table parents (ParentID I) index on ParentID tag ParentID create table Children (ParentID I, ChildID I) index on ParentID tag ParentID rand(-1) lnMax=1 lnMin = 10000 ** Create test tables for ln=1 to 500 lnParent = int((m.lnMax - m.lnMin + 1) * rand( ) + m.lnMin) if not indexseek(m.lnParent,.f.,'Parents','ParentID') insert into parents ; values (m.lnParent) for lnK=1 to 1000 insert into Children ; values (m.lnParent,m.lnK) next endif next endif local lnSec, lnRecno, lnChildren select Children set order to ParentID select parents set relation to ParentID into Children lnSec=seconds() scan && Parent lnParent = ParentID select Children lnRecno=recno() count for ParentID = m.lnParent to lnChildren goto m.lnRecno && Restore record pointer endscan ?seconds()- m.lnSec go top && in parents lnSec=seconds() scan && Parent lnParent = ParentID select Children lnRecno=recno() seek m.lnParent count while ParentID = m.lnParent to lnChildren goto m.lnRecno && Restore record pointer endscan ?seconds()- m.lnSecResults: