Oracle JDBC에서 setString() 및 setDate()에 대한 몇 가지 문제점이 있습니다. setString() 및 setDate()에 대한 테스트를 시도 할 때 setDate()가 setString()보다 빠릅니다. 대부분의 경우. 누군가 내가 이것을 설명하도록 도울 수 있습니까? 여기 내 테스트 : 도움을Oracle JDBC에서 setString() 및 setDate()를 수행 했습니까?
private void doSelectTest()
{
System.out.println("[OUTPUT FROM SELECT]");
//String query = "SELECT LAST_NAME FROM Employees WHERE HIRE_DATE = ?";
String query = "SELECT LAST_NAME FROM Employees WHERE HIRE_DATE = TO_DATE(?,'yyyy-MM-dd')";
try
{
PreparedStatement st = conn.prepareStatement(query);
//st.setDate(1,java.sql.Date.valueOf("2003-06-17"));
st.setString(1,"2003-06-17");
ResultSet r = st.executeQuery();
System.out.println(query.toString());
}
catch (Exception ex)
{
System.err.println(ex.getMessage());
}
}
감사합니다.
* "setDate()가 setString()"보다 빠르다는 주장을 일부 데이터와 함께 백업하십시오. 나는 테이블에서 기록을 읽는 행위가 성과의 주요 부분이 될 것으로 기대합니다. 'HIRE_DATE '에 인덱스가 없다면 전체 테이블 스캔을 의미 할 것이고, 이는'Date '또는'String'으로 인수를 전송할 때의 성능 차이보다 매우 느립니다. – Andreas
문제를 이해하셨습니까? 동일한 테이블을 사용하여 쿼리하고 있습니다. 인덱스, 파티션 등의 모든 성능을 건너 뜁니다. 단지 prepareDat와 setString에 preparestatement를 요청하고 싶습니다. –
그래, 문제를 이해하고,'Date'와'String'의 성능 차이가 쿼리를 실행할 때 무시할만한 수준이 될 것이라고 기대한다. 색인 당신은 충분한 정보를 제공하지 않았기 때문에 귀하의 주장을 증명할 수있는 나의 요구가 있으므로 어떤 숫자를 백업해야하는지 알 수 있습니다. 우리는 그들이 무엇인지 알지 못한다면 당신의 숫자를 설명하는 것을 정말로 도울 수 없습니다. – Andreas