I've a number of fields, inside a couple of different types, where I perform searches using Model.find_by_xxx
Must I be adding a database index for each area I personally use find on?
Yes, most likely. To buy a index is the fact that place/update/remove claims are reduced, given that they now have to alter the index also. The greater indexes on the table, the more it requires for place/update/remove procedures. Therefore if you are mostly just reading through the information then your indexes really are a obvious win.
Another disadvantage to getting many indexes may be the disk space. You are essentially making another copy of this column for that index. Truly this is a secondary consideration.
Not always... it is dependent. The number of rows would you have a much in every table? How frequently could they be up-to-date? The number of fields in every table would you search? May be the database apt to be used mainly for confirming, or mainly included in an operational data entry system?