2016-06-01 1 views
2

現在、私のSQL resultSetは約250Kのレコードを持ち、処理する必要があります。プロセスを完了するのに25秒かかります。私はその上でマルチスレッドを行うつもりです。しかし、ResultSetからデータを分割できませんでした。グーグルでそれはCachedRowSetを言うが、それを実装するための適切な例はない。私はこれを手伝ってください。前もって感謝します。マルチスレッドやその他の高速でResultSetの250Kレコードを処理するにはどうすればよいですか?

+0

で、あなたのアプリケーションの次の部分に移動する前に、すべて250Kレコードを待つ必要がありますか?そうでない場合は、別のスレッドでResultSetコードを実行し、プロデューサ/コンシューマ・パターンを使用できます。 –

+0

@karthikeyan Govindaraj設定基準に基づいてデータを取得しようとします。 1000(ページ番号付け)の後にデータ1000を取得します。その後、速くなり、より良いパフォーマンスを提供します。 –

+0

@ KarthikeyanSubramaniam私はそれを行うことはできません。私はテーブルの結合から取っているからです。だから、もし私がセットでセットを取れば、同じレコードをもう一度得るチャンスがあるかもしれない? – opensourcegeek

答えて

0

あなたができるデータベース からセットした後、設定フェッチすることによって、このリンクに https://technet.microsoft.com/en-us/library/gg699618(v=sql.110).aspx

を確認してください複数のテーブルを結合してクエリを記述しても、この 2のキーワード

FETCH and OFFSET. 
For 1st Ex : fetch = 1, offset = 1000 
For 2nd Ex : fetch = 1001, offset = 1000 

を使用しようとすることができますページ区切りの概念 いずれの場合でもUIには影響しません。

オラクルの場合: オフセットを指定すると、12cで簡単に実行できます。 12Cに

SELECT val FROM table ORDER BY val OFFSET 4 ROWS FETCH NEXT 4 ROWS ONLY; 

は11グラムと前に同じことを行うには、それぞれ、二回内部クエリandouterクエリをROWNUMを使用する必要があります。

11gの同じクエリ

、OFFSETここ

SELECT val FROM (SELECT val, rownum AS rnum FROM (SELECT val FROM table ORDER BY val) WHERE rownum <= 8) WHERE rnum > 4; 

は4

+0

OPがSQL Serverを使用していることをどのように知っていますか? –

+0

@マイケルデータベースを指定するにはkarthikeyan govundarajに問い合わせてください。 –

+0

そのOracleデータベース。 – opensourcegeek

関連する問題