The advice I normally recommend is that you find the 'mostly unique' field, like Customer Number, and index ONLY that field, and require that field be used for searches.
And if the user needs another entrance then it is too bad for them?
No, then you need to re-evaluate the use case, and your indexes. In the overwhelming majority of cases, a single field contains the information needed to narrow down your results to a reasonable, useful number of records.
There are a number of reasons for requiring specific fields for searches -- availability and security are two that I can think of off the top of my head. By forcing someone to use an indexed field in their searches, you ensure that they use the most efficient method of searching the database -- rather than gobbling up all the CPU and I/O on the server doing table scans, slowing down other users. Also, by forcing the usage of, say, a customer number field (and forbidding wildcards), you prevent unscrupulous users from producing information like customer lists to sell to your competition.
Again, there is no one, single, best answer to a general question like this. Each situation is different, and can use a variety or combination of methods to get the best performance. Your best bet is to experiment and understand how CMOD and your database engine work at a lower level, so that you can choose the methods that give you the most benefit for the smallest cost.
-JD.