2013-04-11 2 views
0

92000 행을 반환하는 SQL 쿼리가 있는데, ResultSet.next()를 사용하는 동안 많은 시간을 소비합니다. 문제의 원인이 반복 결과 집합의 조건이라는 것을 알았습니다 .다음 것(). 어떻게하면 실적을 개선하고 지출 시간을 줄일 수 있을지 생각해보십시오.ResultSet 반복 최적화

+1

어떤 데이터베이스를 사용하고 계십니까? –

답변

0

ResultSet.next()는 실제로 네트워크에 영향을 미치지 않고 작동하며 서버와 통신하여 이전 행을 반복하면 더 많은 데이터를 가져옵니다.

그래서 두 팁 :

  1. 데이터베이스에 인덱스를 생성 결과 쿼리에서 prefech의 크기를 늘리십시오. http://www.eclipse.org/eclipselink/api/2.3/org/eclipse/persistence/config/QueryHints.html#JDBC_FETCH_SIZE

  2. -

크기 문제를 다루는이 두 링크에서도 살펴보고 가져올 것 데이터베이스 성능을 증가

반입 크기를 늘리면 데이터베이스에서 데이터를 가져 오는 횟수가 줄어 듭니다. Resultset은 X 행 수를 반입하고 다시 반복 한 후 다시 채우는 버퍼와 같습니다.

마지막으로 하나의 쿼리를 별도의 스레드에서 동시에 수행되는 4-5 개의 쿼리로 분할하면서 스레드를 사용할 수 있습니다.