我在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
您是否瞭解問題?我正在使用同一張表進行查詢。我跳過所有涉及索引,分區等的性能。我只是想在setDate和setString中提前準備。 –
是的,我理解問題,並且我期望Date和String之間的性能差別與執行查詢時發生的任何其他事情相比可以忽略不計,*除非它影響訪問計劃,即阻止使用索引。您沒有提供足夠的信息來推測這一點,因此我要求提供您的聲明的證據,以便我們可以看到您需要支持哪些數字。除非我們知道他們是什麼,否則我們無法幫助解釋您的數字。 – Andreas