실행 속도를 높이고 싶지 않은 추악한 코드 조각이 있습니다. setMotherTableValues () 메서드를 추가 할 때까지 제대로 작동했습니다. 지금은 약 48,000 번 정도 마더 보드 검색을하고 있으며 프로그램을 죽이는 중입니다. 이것을 향상시킬 방법이 있습니까? 데이터베이스의 컬럼을 변경할 권한이 없습니다.MS Access SQL 쿼리 최적화
public void populateMdbRecognitions(ArrayList<MdbRecognition> recognitions, String genid,
String issueid, String issueexpression, String issuedetails,
String tablename) throws SQLException {
ResultSet rs = statement.executeQuery("SELECT `" + genid + "`, `" + issueid + "`, `"
+ issueexpression + "`, `" + issuedetails + "` FROM " + tablename);
while (rs.next()) {
String gen_id = removeAmpsFromGenId(rs.getString(genid));
String issue_id = rs.getString(issueid);
String issue_details = rs.getString(issuedetails);
String issue_expression = rs.getString(issueexpression);
MdbRecognition recognition = new MdbRecognition(gen_id, issue_id,
issue_details, issue_expression, tablename);
recognitions.add(recognition);
}
for (MdbRecognition mdbRecognition : recognitions){
setMotherTableValues(mdbRecognition);
}
}
public void setMotherTableValues(MdbRecognition mdbRecognition) throws SQLException {
ResultSet rs = statement.executeQuery("SELECT `mandatory?`, category, subcategory FROM __MOTHER_ISSUE_TABLE_7 WHERE issue_id ='" + mdbRecognition.getIssueId()+"'");
while (rs.next()){
mdbRecognition.setMandatory(rs.getString("mandatory?").trim());
mdbRecognition.setCategory(rs.getString("category").trim());
mdbRecognition.setSubcategory(rs.getString("subcategory").trim());
}
}
답장을 보내 주셔서 감사합니다. 내가하려는 일을 정정 해 줬어. 분명하게 해줘서 고마워. 데이터베이스의 필드를 업데이트하지 않고 값을 가져 와서 컬렉션에 추가하고 싶습니다. 그렇게 말하면, SQL UPDATE 문에 대해 약간의 내용을 읽을 것입니다. –
@Emil : 저는 단지 업데이트에 대해서 추측하고 있습니다. 당신은 그 mdbRecognition 객체가 사용되는 것을 아는 유일한 사람입니다. –
아, 너무 불분명해서 죄송합니다. mdbRecognition 객체는 GUI에 표시 할 일련의 String 값을 저장하는 데만 사용됩니다. 그래서 내가해야 할 일은 문자열을 가져 와서 그 문자열을 mdbRecognition setMethods의 인자로 사용하는 것입니다. –