Если вы можете использовать псевдослучайную выборку и используете SQL Server 2005/2008, взгляните на TABLESAMPLE. Например, пример из SQL Server 2008 / AdventureWorks 2008, который работает на основе строк:
USE AdventureWorks2008;
GO
SELECT FirstName, LastName
FROM Person.Person
TABLESAMPLE (100 ROWS)
WHERE EmailPromotion = 2;
Загвоздка в том, что TABLESAMPLE не совсем случайный, поскольку генерирует заданное количество строк на каждой физической странице. Вы не можете получить обратно ровно 5000 строк, если не ограничиваете также и TOP. Если вы используете SQL Server 2000, вам придется либо создать временную таблицу, соответствующую первичному ключу, либо сделать это с помощью метода, использующего NEWID ().