Sometimes even simple sql query (on SQL Server 2005) with the use of  TOP(n) can have very bad performance. Here  and here, there are some useful tips on how TOP(n) works. There isen’t a simple solution. Im my case, to avoid the problem I simple removed the TOP(n) clause, and filter the row (small number) on the rowset returned.