1kkk 행을 포함하는 테이블의 Java 코드에서 SELECT 쿼리를 수행해야하므로 결과 집합이 1kk 행에 근접합니다. 그게 왜 내가 그것을 제한해야하고, 선택 쿼리를 여러 번 실행하고 매번 10 만 행을 검색 할 때마다. 내가 10k 행을 얻은 후에는 다음 SELECT에서 그것을 갱신 할 것이다. 문제는 - 각 선택 Oracle에서 테이블의 첫 번째 행을보고 있으므로 성능이 저하됩니다. 첫 번째 행에서 오라클을 보지 않고 이미 업데이트 된 행을 전달하는 데 OFFSET을 사용하려면 어떻게해야합니까?ORACLE에서 오프셋이있는 SELECT 쿼리
답변
이러한 솔루션 중 실제로 성능을 향상시키는 것은 없습니다.
250,000 개의 행으로 구성된 데이터 세트를 가져 와서 10,000 개의 배치로 가져옵니다. 데이터베이스에 대한 상태 기반 연결이없고 해당 SELECT 문이 진행중인 경우 (Oracle 용어에서는 '커서를 열린 상태로 유지') 각 선택 항목이 마지막 항목과 독립적입니다.
따라서 배치를 180,001에서 190,000까지 가져 오려면 배치를 가져 와서 처음 190,000 개의 행을 처리해야합니다. OFFSET과 같은 구문 설탕은 수학과 논리의 기본 규칙을 변경하지 않습니다.
최상의 성능을 얻으려면 결과 집합을 열어두고 행을 계속 가져와야합니다. 그것을 닫지 말고 선택을 다시하지 마십시오.
안녕하세요, Gary. 나는 Java 코드에서 결과 세트를 만들지도 않습니다. 왜냐하면 SELECT 쿼리를 여러 번 사용하여 일렬로 10,000 개의 행을 가져와야하기 때문에 1 백만 개 이상의 행이 포함될 것이기 때문입니다. SELECT의 마지막 시간은 첫 번째 행의 표를 전달합니다. – Demoniac18
Connection.setFetchSize를 사용하면 JBDC 드라이버가 한 번에 가져올 행 수를 지정할 수 있습니다. 모든 것을 RowSet으로 가져 오는 것은 문제를 일으킬 것입니다. 그러나 오라클의 JDBC 드라이버는 필요하지 않은 행을 가져 오지 않을 정도로 똑똑하며 Statement에 대한 한 번의 호출로 4 천만 행의 쿼리 결과를 반복하는 데 문제가 없습니다. query()와 ResultSet.next()에 대한 4 천만 건의 호출 –
- 1. 오프셋이있는 TFileStream
- 2. 오프셋이있는 텍스트 강조 표시
- 3. 오프셋이있는 루프 OpenAL 소스
- 4. SQL SELECT 쿼리
- 5. 간단한 SELECT 쿼리 문제
- 6. mysql select 쿼리 문제
- 7. MySQL 쿼리 - SELECT (카테고리 평균)
- 8. 매우 느린 mysql SELECT 쿼리
- 9. sql 쿼리 select 문 통계
- 10. SQLite는 쿼리 SELECT 중첩 사용
- 11. 작은 SQL 쿼리 문제 SELECT
- 12. MySQL에서 SELECT 쿼리 데이터 가시성
- 13. SQL 고급 쿼리 - select 절
- 14. SELECT * 대 SELECT *
- 15. 자체 파일 오프셋이있는 중복 파일 설명자
- 16. gdb에서 레지스터의 오프셋이있는 데이터에 액세스하는 방법은 무엇입니까?
- 17. 볼륨 오프셋이있는 NTFS 볼륨의 파일을 찾는 방법
- 18. MySQL의 SELECT 중첩 쿼리, 매우 복잡?
- 19. llblgen Pro SELECT TOP (n) 해당 쿼리
- 20. LINQ 쿼리 SELECT 변수의 위치를 만드는 방법
- 21. 쿼리 최적화 : 어느 SELECT 구문이 더 빠릅니까?
- 22. MySQL INSERT/SELECT 하위 쿼리 구문
- 23. select - where-in-join을 사용하는 mysql 쿼리
- 24. 간단한 MySql 조건부 SELECT 쿼리 문제가 BOOLEAN
- 25. 캐시를 사용하지 않는 mysql SELECT 쿼리
- 26. WHERE SELECT 하위 쿼리 오류가있는 MYSQL 업데이트
- 27. Select 문의 내에서 SQL 쿼리 수정
- 28. 중첩 된 SELECT 쿼리 Java + MySQL
- 29. SPARQL 엔티티는 select 쿼리 내부에 목록을 표시합니다.
- 30. select with select
무엇을하려고합니까? 이 정도의 검색 결과를 사용자가 탐색한다고 상상할 수는 없습니다. 일괄 처리 방식의 프로세스를 상상할 수 없습니다. – Rene
업데이트 결과 집합을 제한해야하는 이유는 무엇입니까? 커밋하기 전에 한 번에 수백만 행에 영향을주는 update 문을 정기적으로 실행했습니다. – Wolf
이미 업데이트 된 행을 식별하고 무시할 수 있습니까? 아마도 업데이트 된 레코드에 대한 배치 번호를 저장하십시오. –