Which line of code is taking up a significant amount of time? Is it ExecuteReader, con.Open, dr.Read, or something else?
We tried to reproduce this problem in house, but couldn't. We have some additional questions that can help diagnose the issue:
1) Did you run a trace at trace level 7?
2) How are the table and Index created?
3) Number of rows in the table. How many rows are returned from the query?