私の目的は、特定の従業員のDeptNamesをEmpテーブルから取得することです。しかし、従業員の数は様々です。以下のアプローチが正しいか、以下のアプローチのどちらがパフォーマンスが良いかを教えてください。それとももっと良い方法がありますか?どのアプローチがパフォーマンス面で優れていますか? (JDBCのプリペアドステートメントでの可変パラメータマーカーの使用に関して)
PreparedStatement pstmt = conn.prepareStatement("SELECT Dept from Emp WHERE EmpNum = ? ");
for (int i = 0, len = empNumberList.size(); i < len; i++) {
pstmt.setLong (1, empNumberList.get(i));
ResultSet rs = pstmt.executeQuery();
}
それとも
StringBuffer buffer = new StringBuffer();
buffer.append("SELECT Dept from Emp WHERE EmpNum IN(?");
for (int i = 0, len = empNumberList.size(); i < len; i++) {
buffer.append(",?");
}
buffer.append(")");
PreparedStatement pstmt = con.prepareStatement(buffer.toString());
for(int i = 0; i < len; i++) {
pstmt .setLong(i, empNumberList.get(i));
}
ResultSet rs = pstmt .executeQuery();
それともこれを行うには、他のより良い方法はありますか?ご意見をお聞かせください。前もって感謝します!
Ravilla