>>>SELECT pk from table order by 1 ... >>>INDEX ON pk tag tagpos && without this, the locate is equal to the ordered count, again >>>SEEK m.pk >>>? recno() >>>>>
CREATE TABLE SPEED.DBF FREE ; (Spd_ID I, ; Spd_Char C(10), ; Spd_Date D, ; Spd_DT T) LOCAL ; m.lnI, ; m.lnX, ; m.Spd_ID, ; m.Spd_Char, ; m.Spd_Date, ; m.Spd_DT FOR m.lnI = 1 TO 500000 m.SPD_ID = m.lnI m.SPD_CHAR = TRANSFORM(m.lnI,"##########") *This will give me groups of records *with the same date / date time. m.lnX = m.lnI / 100 m.SPD_DATE = {^2000-01-01} + m.lnX m.SPD_DT = {^2000-01-01 00:00:00} + m.lnX INSERT INTO SPEED FROM MEMVAR IF MOD(m.lnI,1000) = 0 WAIT WINDOW TRANSFORM(m.lnI) NOWAIT ENDIF ENDFOR INDEX ON SPD_ID TAG SPD_ID INDEX ON SPD_DATE TAG SPD_DATE INDEX ON SPD_DT TAG SPD_DT INDEX ON VAL(SPD_CHAR) TAG VALCHAR CLEAR ALL a=SECONDS() SELECT * from speed order by spd_date descending into cursor c_fabio LOCATE FOR spd_id = 500000 NOOPTIMIZE ?"locate:",RECNO(),SECONDS()-m.a a=SECONDS() SELECT * from speed order by spd_date into cursor c_fabio INDEX on spd_id TAG spd_id DESCENDING SEEK 500000 ?"seek:",RECNO(),SECONDS()-m.a