JDBC를 사용하여 데이터베이스 독립적 인 응용 프로그램을 작성하려고합니다. 이제 일부 테이블에서 상위 N 개의 항목을 가져 오는 방법이 필요합니다. JDBC에 setMaxRows
메서드가 있다는 것을 알았지 만 데이터베이스를 사용하면 모든 결과가 누출되어 무서워서 JDBC 드라이버 만 결과를 줄일 수 있으므로 사용하기가 쉽지 않습니다. 10 억 개의 행이있는 테이블에서 상위 5 개 결과가 필요하면 내 목이 부러 질 것입니다 (테이블의 인덱스는입니다).JDBC setMaxRows 데이터베이스 사용량
모든 종류의 데이터베이스에 대한 특수한 SQL 문을 작성하는 것은 좋지 않지만 데이터베이스가 영리한 쿼리 계획을 세우고 필요한 것보다 더 많은 결과를 가져 오는 것을 중지하게합니다.
setMaxRows
을 사용하면 데이터베이스가 제대로 작동하지 않는다고 말할 수 있습니까?
최악의 경우에 나는 희망하는 방식으로이 작업에 의존 할 수 없다고 생각합니다. 저는 주로 Postgres 9.1과 Oracle 11.2에 관심이 있습니다. 따라서 누군가이 데이터베이스에 대한 경험이 있다면 앞으로 나아 갑니 다.
좋은 질문입니다. javadoc에서는 "이 Statement 객체에 의해 생성 된 ResultSet 객체가 주어진 수에 포함될 수있는 최대 행 수에 대한 제한을 설정합니다. 제한을 초과하면 초과 행이 자동으로 삭제됩니다." 내가 읽은 방식은 JDBC 드라이버가 작업을 수행 할 수 있음을 의미합니다. JDBC 구현에 의존하는 것으로 의심됩니다. –