>GO TOP >t1=SECONDS() >COUNT FOR 1=F1 && time = o(_tally*log(reccount()) >?? STR(100000*(SECONDS()-t1)/log(reccount()),15,4) !!!!!!!!!!!!!!!!! LOG() > >GO TOP >t1=SECONDS() >COUNT REST FOR 1=F1 && time = o(RECCOUNT())/FACTOR >?? STR(100000*(SECONDS()-t1)/RECCOUNT(),15,4) !!!!!!!!!!!!!!!!!! no LOG >Run this, more readable output, with CDX index the control is more simple.
ACTIVATE SCREEN CLEAR CLOSE TABLES all SET TALK OFF SET DELETED OFF SET MEMOWIDTH TO 200 _SCREEN.FontName = "Courier New" ? 'RECCOUNT' AT 40 ?? 'R_FULL' AT 55 , 'L_FULL' AT 65 ?? 'R_PARTIAL' AT 75 , 'L_PARTIAL' AT 85 ?? 'R_NONE' AT 95 , 'L_NONE' AT 105 CREATE CURSOR TEST (F1 I) FOR J=1 TO 10 DELETE TAG ALL FOR K=1 TO 100000 INSERT INTO TEST VALUES (0) NEXT INSERT INTO TEST VALUES (1) TEST() INDEX ON F1 TAG TF1 SET ORDER TO 0 TEST() SET ORDER TO 1 TEST() INDEX ON 7 TAG TF2 TEST() ? NEXT *INSERT INTO TEST VALUES (1) PROCEDURE test ? "TAGS =",STR(TAGCOUNT(),3) ?? " ORDER SET = " ?? IIF(EMPTY(ORDER()),"NONE" , KEY() + ; IIF(KEY()=="F1",", SAME", ", DIFFERENT") ) ?? RECCOUNT() at 40 GO TOP t1=SECONDS() COUNT FOR 1=F1 && time = o(_tally*log(reccount()) ?? STR(100000*(SECONDS()-t1)/log(reccount()),10,3) GO TOP t1=SECONDS() COUNT FOR F1=1 && time = o(_tally*log(reccount()) ?? STR(100000*(SECONDS()-t1)/log(reccount()),10,3) GO TOP t1=SECONDS() COUNT REST FOR 1=F1 && time = o(RECCOUNT())/FACTOR ?? STR(100000*(SECONDS()-t1)/RECCOUNT(),10,3) GO TOP t1=SECONDS() COUNT REST FOR F1=1 && time = o(_tally*log(reccount()) ?? STR(100000*(SECONDS()-t1)/RECCOUNT(),10,3) GO TOP t1=SECONDS() COUNT NOOPTIMIZE FOR 1=F1 && time = o(RECCOUNT()) ?? STR(100000*(SECONDS()-t1)/RECCOUNT(),10,3) GO TOP t1=SECONDS() COUNT NOOPTIMIZE FOR F1=1 && time = o(RECCOUNT()) ?? STR(100000*(SECONDS()-t1)/RECCOUNT(),10,3)Now, try this, with "=="
ACTIVATE SCREEN CLEAR CLOSE TABLES all SET TALK OFF SET DELETED OFF SET MEMOWIDTH TO 200 _SCREEN.FontName = "Courier New" ? 'RECCOUNT' AT 40 ?? 'R_FULL' AT 55 , 'L_FULL' AT 65 ?? 'R_PARTIAL' AT 75 , 'L_PARTIAL' AT 85 ?? 'R_NONE' AT 95 , 'L_NONE' AT 105 CREATE CURSOR TEST (F1 I) FOR J=1 TO 10 DELETE TAG ALL FOR K=1 TO 100000 INSERT INTO TEST VALUES (0) NEXT INSERT INTO TEST VALUES (1) TEST() INDEX ON F1 TAG TF1 SET ORDER TO 0 TEST() SET ORDER TO 1 TEST() INDEX ON 7 TAG TF2 TEST() ? NEXT *INSERT INTO TEST VALUES (1) PROCEDURE test ? "TAGS =",STR(TAGCOUNT(),3) ?? " ORDER SET = " ?? IIF(EMPTY(ORDER()),"NONE" , KEY() + ; IIF(KEY()=="F1",", SAME", ", DIFFERENT") ) ?? RECCOUNT() at 40 GO TOP t1=SECONDS() COUNT FOR 1==F1 && time = o(_tally*log(reccount()) ?? STR(100000*(SECONDS()-t1)/log(reccount()),10,3) GO TOP t1=SECONDS() COUNT FOR F1==1 && time = o(_tally*log(reccount()) ?? STR(100000*(SECONDS()-t1)/log(reccount()),10,3) GO TOP t1=SECONDS() COUNT REST FOR 1==F1 && time = o(RECCOUNT())/FACTOR ?? STR(100000*(SECONDS()-t1)/RECCOUNT(),10,3) GO TOP t1=SECONDS() COUNT REST FOR F1==1 && time = o(_tally*log(reccount()) ?? STR(100000*(SECONDS()-t1)/RECCOUNT(),10,3) GO TOP t1=SECONDS() COUNT NOOPTIMIZE FOR 1==F1 && time = o(RECCOUNT()) ?? STR(100000*(SECONDS()-t1)/RECCOUNT(),10,3) GO TOP t1=SECONDS() COUNT NOOPTIMIZE FOR F1==1 && time = o(RECCOUNT()) ?? STR(100000*(SECONDS()-t1)/RECCOUNT(),10,3)1. The VFP(T) "intelligent" optimization is not the possible best in many cases.