Can you create an index on formid? That should help. Also, can you narrow down the information being returned? "Select *" will have a negative performance impact as well and with the number of columns on your table, it's not helping your cause, especially without any good indexes (not sure you'd really want to attempt a covering index on this table!). 500,000 rows of data is really not a substantial amount of data anymore but multiply it by your row size and it's quite a large return size. You can also look at actual server constraints (memory, disk, etc.) but that's probably out of the scope of this topic.
edit - How did you come up with the title of this topic when you never ask about "passing a column name"? Just a bit misleading.
-- You can't be late until you show up.