Oracle では、任意のクエリで返される行数は、「仮想」rownum
列でフィルタリングすることによって制限できます。次の例を考えてみましょう。この例では、最大で 10 行が返されます。
SELECT * FROM all_tables WHERE 行番号 <= 10
Ingres で同様のことを行う簡単で一般的な方法はありますか?
select * from myTable limit 10 は機能しません。
1つの可能な解決策を発見しました:
TID は「タプル識別子」または行アドレスです。TID には ページ番号と、行に対する相対オフセットのインデックス ページ境界。TID は現在、4 バイトの整数として実装されています。 TID は、テーブル内の各行を一意に識別します。すべての行には TID。TID の上位 23 ビットは、ページのページ番号です。 行が発生する場所。TID は、名前によって SQL でアドレス指定できます。 「チット」
したがって、次のようなものを使用して、返される行数を制限できます。
select * from SomeTable where tid < 2048
このメソッドは、返す行数が多少不正確です。ただし、テストを高速化するために非常に大きな結果セットから返される行を制限したいだけなので、私の要件には問題ありません。
ねえクレイグ。すみません、忍者編集しました。いいえ、リミット 10 は機能しません。すべての人がサポートする標準 SQL だと思っていたのは間違いでした。Ingres は (ドキュメントによると) 「First」を使用して問題を解決します。
ストックホルムの忍者編集者さん!「最初の X」がうまく機能し、私が思いついたよりもはるかに優れたソリューションであることを確認しました。ありがとうございました!