:MySQL의 쿼리 요청은 JDBC .executeQuery보다 훨씬 시간이 덜 걸립니다
double timeBefore = System.currentTimeMillis();
ResultSet rs = st.executeQuery(sql);
double timeAfter = System.currentTimeMillis();
System.out.println(timeAfter - timeBefore);
반환은 9904.0
입니다 동안 나는 워크 벤치 MySQL 클라이언트에서 동일한 쿼리를 수행 할 때 :
는SELECT DISTINCT completeAddress FROM DB_M3_Medium.AvailableAddressesV2 where postNr = 2300 ORDER BY completeAddress ASC;
이 소요 0.285s
그것은 어떻게 가능합니까?
추신 : 다양한 페이로드 크기로 시도해 보았습니다. 10 초는 자바 JDBC
편집과 :
나는 위와 같은 쿼리 PreparedStatement
을 시도하고 약, 같은 시간이 걸렸습니다. 1s 적은.
String query = "/* ping */ SELECT 1";
double timeBefore = System.currentTimeMillis();
PreparedStatement preparedStatement = DBConnect.getInstance().con.prepareStatement(query);
ResultSet rs = preparedStatement.executeQuery(query);
double timeAfter = System.currentTimeMillis();
System.out.println(timeAfter - timeBefore);
을 그리고 응답했다 : 완벽하지만 좋은 것은 아닙니다 1306.0
.
하지만 여전히 문제가있는 것은 아닙니다.
EDIT2 : 나는 걸리는 시간은 DB에있는 데이터의 양 (안 내가 검색하고있는 페이로드)와 관련이 있다고 생각했다. 색인 생성이 작동하지 않는 것처럼 보입니다. 하지만 왜 내가 JDBC를 가지고 갈 때만 문제가 생기 겠지만 WorkBench와는 관련이 없다.
은 원격 서버의 db에 연결하는 Java 코드입니까? – e4c5
예. 그렇지만 쿼리를 실행하는 동안 연결을 제외하고 10 초가 걸릴 수 있습니다. 페이로드 크기와 무관하다. –
실제로 다른 답변은 여러 가지로 지적되었습니다. 오버 헤드가 있습니다. 둘 사이의 핑 (ping)을 위해 어떤 종류의 타이밍을 얻습니까? – e4c5