tags:

views:

223

answers:

2

I need to query a Sybase database which has a lot of data in it, and would like to set a limit so the DB stops the query after 10 results.

The key thing is performance, so it would be no use if it searched all results and then then returned the last 10 results.

Thanks in advance

A: 

I believe you can do a SET ROWCOUNT 10 first, then all queries in this session until a further SET ROWCOUNT will return no more than 10 rows. As a comment points out, this affects all following queries in the session (not just SELECTs!) until turned off (by setting to 0) or set differently -- this "global" effect makes it less handy than the typical LIMIT clause of other engines, which is inherently per-query, but, I don't think you can do anything about that.

Alex Martelli
And SET ROWCOUNT 0 to switch off row count limiting.
martin clayton
Also worth emphasizing the while it's set to a non-zero value other statements (such as update and delete) will be affected
Hobo
thanks very much, exactly what i needed
Ryan
A: 

With Sybase 12.5 and later you can use the top predicate in your select statement. This is a non-ANSI feature which MSSQL has had for quite a while.

select top 10 * from people

You can't use top in subqueries, updates, or deletes, and there is no corresponding 'bottom' clause.

The advantage of top is you don't have to worry about resetting it. This is especially important if you are using a database connection pool.

brianegge