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
問題を理解しましたか?私はクエリに同じテーブルを使用しています。私は、インデックス、パーティションなどに関連するすべてのパフォーマンスをスキップします。私はprepareDateとsetStringにpreparestatementを要求したいだけです。 –
はい、私は問題を理解し、 'Date'と' String'のパフォーマンスの差は、アクセスプランに影響を与えない限り、つまりクエリの実行時には何も起こりません。インデックス。あなたはそれを仮定するのに十分な情報を与えていないので、あなたの主張の証明のための私の要求は、あなたがそれをバックアップしなければならない数字を見ることができます。私たちが何をしているのか分からない限り、あなたの数字を説明するのは本当に助けにはなりません。 – Andreas