此select语句返回4k +行.我的应用程序占用的时间是while循环.单独循环需要2到4分钟.有关如何优化它的任何想法?
不要太担心查询本身,因为它不会花太多时间在查询响应上.
ArrayList<MembershipMemberInterestsVo> list = new ArrayList<MembershipMemberInterestsVo>();
StringBuffer sql = new StringBuffer();
sql.append("SELECT to_char(mai.id_info) as id, ");
sql.append("to_char(mai.field_title) as title, ");
sql.append("to_char(mmi.member_id) as membership_id ");
sql.append("FROM memserv_member_interests mmi, memserv_add_info mai ");
sql.append("WHERE mmi.interests like '%-' || mai.memserv_id || '-%' ");
sql.append("AND mai.soc_body_id = ? ");
sql.append("UNION ");
sql.append("SELECT to_char(mit.interest_id) as id, ");
sql.append("to_char(mit.text) as title, ");
sql.append("to_char(mit.member_id) as membership_id ");
sql.append("FROM memserv_member_interest_text mit ");
sql.append("WHERE society_id = ?");
pstmt = conn.prepareStatement(sql.toString());
pstmt.setString(1, societyId);
pstmt.setString(2, societyId);
rs = pstmt.executeQuery();
MembershipMemberInterestsVo vo = null;
while (rs.next()) {
vo = new MembershipMemberInterestsVo();
vo.setInterestId(rs.getString("id"));
vo.setMembershipId(rs.getString("membership_id"));
vo.setTitle(rs.getString("title"));
vo.setSocietyId(societyId);
list.add(vo);
}
Run Code Online (Sandbox Code Playgroud)
最有可能的问题是您的SQL语句.将4,000个条目添加到列表中,不会花费任何明显的时间.
如果这不是拼写错误
WHERE mmi.interests like '%-' || mai.memserv_id || '-%'
Run Code Online (Sandbox Code Playgroud)
你最终将整个表作为结果集.
| 归档时间: |
|
| 查看次数: |
318 次 |
| 最近记录: |