得到了這段醜陋的代碼,我想讓它運行得更快。它工作正常,直到我不得不添加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:我只是在猜測UPDATE;你是唯一知道那個mdbRecognition對象用於什麼的人。 –
噢,對不起,很抱歉。 mdbRecognition對象僅用於存儲一串字符串值,以顯示在GUI中。所以我需要做的是獲取字符串,並將這些字符串用作mdbRecognition setMethods上的參數。 –