2009-10-19 2 views
24

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

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

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

+0

Какой 10 вы хотите? Первые 10? –

ответ

20

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

+6

И установите ROWCOUNT 0, чтобы отключить ограничение количества строк. –

+2

Также стоит подчеркнуть, что в то время, когда он установлен на ненулевое значение, будут затронуты другие операторы (например, обновление и удаление). – Hobo

+0

спасибо большое, именно то, что мне нужно – Ryan

36

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

select top 10 * from people 

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

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

+1

, есть ли способ сделать это для обновлений? –

+0

Он работает и для UPDATE, и для DELETE. '' 'UPDATE TOP 10 FROM people ...' '' '' 'DELETE TOP 10 people''' См. Http://infocenter.sybase.com/help/index.jsp?topic=/com .sybase.help.doc.ase_docs_12.5.3.newfeatures1253_rev/html/newfeatures1253_rev/newfeatures1253_rev11.htm –

-1

Вы можете попробовать добавить этот раздел «выборка только для первых n строк».

+0

это не работает. У вас есть ссылка? – Beginner

+0

Это не работает для Sybase, это для DB2. – skw