In general, if you have a primary key on the table, that creates what is called a "Clustered Index", which means the data in the table is physically sorted in that order. For example, if you have a table "blah" which has 2 fields "blah_id INT PRIMARY KEY, blah_name varchar(200)", your data is stored in blah_id order.
If your query is "select blah_name from blah order by blah_name" then it's going to be slow unless you declare a second index (non-clustered) on the blah_name field. You can only have ONE clustered index per table (obviously, as the data can only be stored in one way), but you can have multiple non-clustered indexes.
This should speed up performance some.
Hope this helps,
Thanks,
Birgit