I have no references to citing about this, only experience / anecdotal evidence.
First, queries can almost always be improved with indexes. The exact benefit depends on the request.
- If the query requires only specific records / a small part of the table, the index will help - If the query requires the entire table, but can be useful from the ordered data, the index will help
Clustered indexes typically provide performance advantages over nonclustered indexes. In a very simplified sense, using a non-clustered index is like using two tables and joining them together (the friendly search index is used first, which is then combined with the data itself - if the index does not contain all the data fields that you need).
However, it discusses the order in which data is added to your table. If your clustered index means that data is often inserted or deleted in the middle of the table, you will get fragmentation and other artifacts. However, in my experience, awareness and consideration of this is necessary only in extreme situations.
In short, DEFINITELY index your data. And a clustered index is usually best suited to meet your worst queries.
Regarding the difference between VARCHAR and CHAR? In the old days, it was important to keep variable-length fields at the end of your data to make identifying fixed-length fields easier. This meant that having the VARCHAR field as your first field and using it as a unique identifier was pretty low.
Currently, the difference in performance is negligible. Personally, I still save the unique identifiers as a fixed length. Variable-length data usually does not have a noticeable operating cost, but when you really do comparisons for join predicates, etc., it is much more appropriate, if possible, to have fixed-length fields.