Just index any fields used in joins or Where clauses.
Another factor to be aware of is the target of the Where clause in the select. Not always possible but whereever you are able, apply the clause to the small table of the join.
Also note that queries are much slower if you are joining or applying the Where clause on a text field, particularly if the value has several characters. If there are multiplerecords that repeat a text value, the values should be recorded as an integer datatype. A lookup table is used to convert the integer to the text for display.