CLEAR ALL CLEAR SET TALK OFF SET NULL ON ? "2 tables" ? "---------" FOR nT = 51 TO 52 SELECT 0 CREATE CURSOR ("Res"+ALLTRIM(STR(nT))) (C C(1)) APPEND BLANK ENDFOR ? "with alias" TestPerf('Res51','Res52') ? "with id" TestPerf(SELECT('Res51'),SELECT('Res52')) ? ? "100 tables" ? "---------" CLEAR ALL FOR nT = 1 TO 100 SELECT 0 CREATE CURSOR ("Res"+ALLTRIM(STR(nT))) (C C(1)) APPEND BLANK ENDFOR ? "with first to next alias" TestPerf('Res1','Res2') ? "with first to next id" TestPerf(SELECT('Res1'),SELECT('Res2')) ? "with first to last id" TestPerf(SELECT('Res1'),SELECT('Res100')) ? "with last to first id" TestPerf(SELECT('Res100'),SELECT('Res1')) FUNCTION TestPerf(w1,w2) nSec= SECONDS() FOR nT = 1 TO 100000 SELECT (m.w1) SELECT (m.w1) ENDFOR ? "200.000 workarea changes on the active", SECONDS() - nSec at 40 nSec= SECONDS() FOR nT = 1 TO 100000 SELECT (m.w2) SELECT (m.w1) ENDFOR ?? "on another" at 60, SECONDS() - nSec at 80 nSec= SECONDS() SELECT (m.w1) FOR nT = 1 TO 100000 REPLACE C WITH "X" IN (m.w1) ENDFOR ? "100.000 replacements in current workarea", SECONDS() - nSec at 40 nSec= SECONDS() SELECT (m.w1) FOR nT = 1 TO 100000 REPLACE C WITH "X" IN (m.w2) ENDFOR ?? "on another" at 60, SECONDS() - nSec at 80 SELECT (m.w1) INDEX ON C TAG C SELECT (m.w2) INDEX ON C TAG C nSec= SECONDS() SELECT (m.w1) FOR nT = 1 TO 100000 SEEK "X" IN (m.w1) ENDFOR ? "100.000 seeks in current workarea", SECONDS() - nSec at 40 nSec= SECONDS() SELECT (m.w1) FOR nT = 1 TO 100000 SEEK "X" IN (m.w2) ENDFOR ?? "on another" at 60, SECONDS() - nSec at 80 nSec= SECONDS() SELECT (m.w1) FOR nT = 1 TO 100000 GO 1 IN (m.w1) ENDFOR ? "100.000 Go's in current workarea", SECONDS() - nSec at 40 nSec= SECONDS() SELECT (m.w1) FOR nT = 1 TO 100000 GO 1 IN (m.w2) ENDFOR ?? "on another" at 60, SECONDS() - nSec at 80Comment ? Try with 32000 !