remove TOP 100 and use following
SET ROWCOUNT 100
-- ur select query here
SET ROWCOUNT 0
What is performance impact of this ? Well as per BOL
If a SELECT statement that includes TOP also has an ORDER BY clause, the rows to be returned are selected from the ordered result set. The entire result set is built in the specified order and the top n rows in the ordered result set are returned.
The other method of limiting the size of a result set is to execute a SET ROWCOUNT n statement before executing a statement. SET ROWCOUNT differs from TOP in these ways:
-- Amit