Как ограничить количество результатов, возвращаемых в 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 строк".