2016-06-01 3 views
2

현재 내 SQL resultSet은 약 250K 개의 레코드를 가져오고 처리해야합니다. 이 과정을 완료하는 데는 25 초가 걸립니다. 나는 그것에 멀티 스레딩을 할 계획이다. 그러나 ResultSet에서 데이터를 분리 할 수 ​​없습니다. 인터넷 검색 때 CachedRowSet하지만 구현에 대한 적절한 예는 없습니다. 제발 좀 도와주세요. 미리 감사드립니다.멀티 스레딩이나 다른 빠른 방법으로 ResultSet에서 250K 레코드를 처리하는 방법은 무엇입니까?

+0

당신이 응용 프로그램의 다음 부분으로 이동하기 전에 모든 250K 기록을 기다릴 필요합니까? 그렇지 않은 경우 다른 스레드에서 ResultSet 코드를 실행하고 생성자/사용자 패턴을 사용할 수 있습니다. –

+0

@karthikeyan Govindaraj 설정 기준으로 데이터를 가져 오십시오. 1000 (페이지 매김) 후에 1000 데이터를 가져옵니다. 그렇다면 그것은 더 빨라지고 더 나은 성능을 낼 것입니다. –

+0

@KarthikeyanSubramaniam 나는 그것을 할 수 없습니다. 나는 테이블 조인에서 벗어나기 때문입니다. 그래서 세트로 세트를 가져 가면 다시 같은 레코드를 얻을 수있는 가능성이 있습니까? – opensourcegeek

답변

0

당신은

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

후 데이터베이스 당신은 할 수에서 설정 세트를 가져 오는으로이 링크 https://technet.microsoft.com/en-us/library/gg699618(v=sql.110).aspx

을 확인하시기 바랍니다이 두 가지 핵심 단어를 사용하려고도 이상의 테이블을 조인하여 쿼리를 작성하고 있습니다 페이지 매김 개념 어쨌든 UI에는 영향을 미치지 않습니다.

오라클의 경우 : OFFSET을 지정하여 12c에서 쉽게 할 수 있습니다. 12C에서

,

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

은 11g 이전에 동일한 작업을 수행하려면 각각 두 번 내부 쿼리 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

오라클 데이터베이스. – opensourcegeek