SET ORDER TO or USE TABLE ORDER TAG myTag gives the worst performance regardless of SET('talk') setting. Strange, but true...
>>I'm thinking, could it be better to use filtered index instead.
>>
>>E.g. currently I do:
>>scan for m.plError=.f. and SearchTB = m.lcSearch and not empty(InsCommand)
>>
>>May be it would be faster to set a filtered index and do seek, when scan while?
>>
>>However, as I recall, I tried similar idea (in another context, though) and it actually slowed it down.
>>
>>>
INDEX ON EMPTY (MyField) TAG E_MyField
>>>SET FILTER TO NOT EMPTY (MyField)
HTH
>>>
>>>>If I want to filter all non-empty values for character (100) field, what would be the best expression for the index (if I need the index)?
>
>
>* define this index
>INDEX ON SearchTB TAG TAGOPTIM FOR NOT empty(InsCommand)
>
>
>On Routine
>
>SET ORDER TO TAGOPTIM
>SEEK m.lcSearch
>scan WHILE SearchTB = m.lcSearch AND !m.plError
>...
>ENDSCAN
>
If it's not broken, fix it until it is.
My Blog