I am working on a query that needs to page through well over 1 million rows. We are working with 1 million while it is in test, but this number will grow very large. The select statement is causing a lot of problems with the sorting. We can manipulate the query so that it will run in under 2 seconds. The statement is as follows: SELECT TOP 25 i.ItemID, ifd2.ItemFieldDefaultId FROM tblItems i LEFT JOIN tblItemFields ifs2 ON i.ItemId = ifs2.ItemId INNER JOIN tblItemFieldDefaults ifd2 ON ifd2.ItemFieldTypeId = ifs2.FieldTypeId AND ifd2.ItemFieldDefaultId = ifs2.FieldValue AND ifd2.ItemFieldProjectId = ifs2.itemrootid INNER JOIN tblObjectRelations ors on ors.objectid = i.itemparentid INNER JOIN tblUserSecurity us ON us.UserSecurityUserId = 1076 AND us.UserSecurityObjectId = ors.ObjectId WHERE i.ItemCreationDate <= 'Dec 31 2003 12:00PM' AND i.itemrootid = 1100 and ifs2.fieldtypeid = 252 AND ors.L > 1 AND ors.R < 200000 AND us.UserSecurityValue & 1 = 1 AND ors.ObjectStatus IN (1,4) AND ors.ObjectTypeID=6 ORDER BY ifd2.ItemFieldDefaultId DESC When this is run with the TOP 25, everything runs great. When it returns anything over 410 rows, it seems to want to re-sort everything (according to the execution plan) and takes about 4 minutes. SELECT TOP 409 works great as well. It has gotten very confusing and was wondering if anyone might have any ideas as to why something like this would slow it down. If we remove rows with a more narrow WHERE clause, it seems to re-sort as well. With this being the case, none of the paging routines (temp table, different TOP SELECTS) will work. This is a dynamiccaly generated SQL statement based on sort criteria chosen at the client. The lists are used in real time, and cannot have very long query times. All where and join fields are indexed appropriately, and it looks like we have the correct indexes, etc. that we're needing. Any help or ideas will be greatly appreciated!