web-dev-qa-db-ja.com

Sybaseで返される結果の量を制限するにはどうすればよいですか?

大量のデータが含まれるSybaseデータベースにクエリを実行する必要があり、制限を設定して、DBが10件の結果の後にクエリを停止するようにします。

重要なのはパフォーマンスであるため、すべての結果を検索してから、最後の10件の結果を返しても無駄です。

前もって感謝します

26
Ryan

SET ROWCOUNT 10最初に、次にこのセッションのすべてのクエリをさらにSET ROWCOUNTは10行以下を返します。コメントが指摘しているように、これはallセッションでのクエリ(SELECTs!だけでなく)がオフになる(0に設定する)か、別の方法で設定するまで影響します-この「グローバル」な効果により、あまり便利ではなくなります他のエンジンの典型的なLIMIT句よりも本質的ですが、本質的にはクエリごとですが、それについては何もできないと思います。

22
Alex Martelli

Sybase 12.5以降では、selectステートメントで最上位の述語を使用できます。これは、MSSQLがかなり前から持っていた非ANSI機能です。

select top 10 * from people

サブクエリ、更新、または削除でtopを使用することはできません。対応する 'bottom'句はありません。

Topの利点は、リセットすることを心配する必要がないことです。データベース接続プールを使用している場合、これは特に重要です。

42
brianegge

私はたまたまこの問題に遭遇し、TOPとSTART AT MySQL LIMITの代わりにsybase docを使用しています。

http://dcx.sybase.com/1101/en/dbusage_en11/first-order-formatting.html

SELECT TOP 2 START AT 5 * FROM Employees ORDER BY Surname DESC;

1
Vadim Cote