Ariel,
SET FILTER is used to create a subset of records that meet a specific condition and then work with that set for awhile.
SELECT SQL will do the same thing. Difference is that
SELECT is a command that is transportable to other database environments and
SET FILTER is not. So each time you write another SELECT statement you learn more skills that are valuable to multiple programming environments.
SET FILTER can be fast (if the condition is fully Rushmore optimizable) but it can also be as slow as molasses in January (when it is not optimizable).
If you need to find a record based on compound criteria you can use the LOCATE command to find that record. If you need to process a group of records that meet a certain criteria you can;SCAN FOR YourCriteria
blah
blah
ENDSCAN
The SEEK function and/or command are used to find a record in an index. SEEK requires that there be an index order set and setting an index order slows down optimizable operations. SET FILTER/font> is not a command that should NEVER be used, but it is one of the commands in VFP that is very often used where it is not the best solution to the problem at hand.