Как ограничить количество результатов, возвращаемых в Sybase?

Мне нужно запросить базу данных Sybase, в которой есть много данных, и хотел бы установить ограничение, чтобы БД останавливал запрос после 10 результатов.

Ключевым моментом является производительность, поэтому было бы бесполезно, если бы он искал все результаты и затем возвращал последние 10 результатов.

Заранее спасибо

Ответ 1

Я считаю, что сначала вы можете сделать SET ROWCOUNT 10, а затем все запросы в этом сеансе, пока следующий SET ROWCOUNT не вернет не более 10 строк. Как отмечается в комментарии, это влияет на все следующие запросы в сеансе (а не только SELECT s!) До тех пор, пока он не отключится (установкой на 0) или не будет отличаться - этот "глобальный" эффект делает его менее удобным, чем типичный LIMIT других движков, которые по сути являются запросами, но я не думаю, что вы можете что-либо сделать с этим.

Ответ 2

С Sybase 12.5 и более поздними версиями вы можете использовать верхний предикат в своем заявлении select. Это функция, отличная от ANSI, которая MSSQL имела довольно долгое время.

select top 10 * from people

Вы не можете использовать top в подзапросах, обновлениях или удалениях, и не существует соответствующего предложения "bottom".

Преимущество top - вам не нужно беспокоиться о его перезагрузке. Это особенно важно, если вы используете пул соединений с базой данных.

Ответ 3

Вы можете попробовать добавить этот раздел: "Получить только первые n строк".