如何使查询数据的数据更快些
下面是我从数据里查询出来的数据,现在查询的数据很慢,大家帮我看看如何优化
<HTML>
<HEAD>
<%@ page language= "java " contentType= "text/html; charset=UTF-8 "
pageEncoding= "UTF-8 "%>
<%@page import= "com.gsi.scm.db.DBscm " %>
<%@page import= "com.gsi.scm.utils.HandlePage " %>
<%@page import= "java.sql.ResultSet " %>
<META http-equiv= "Content-Type " content= "text/html; charset=UTF-8 ">
<META name= "GENERATOR " content= "IBM Software Development Platform ">
<META http-equiv= "Content-Style-Type " content= "text/css ">
<TITLE> OA系统 </TITLE>
</HEAD>
<%
DBscm db = new DBscm();//连接数据库
HandlePage handlePage = new HandlePage();
int size = 12;
int pageCount = 0;
String sql= "select a.C_Usr_Id,a.C_Usr_Name,a.C_Usr_Passwd,a.C_Sex,a.C_Degree_Id,a.D_Birthday,a.C_Education,a.C_Usr_Comment from sys_usr a,sys_role_usr b,sys_roles c where a.C_Usr_ID=b.C_Usr_ID and c.C_Roles_ID=b.C_Role_ID and b.C_Role_ID= '1 ' ";
ResultSet rs = db.getSelectRs(sql);
rs.last();
int recordCount = rs.getRow();
handlePage.calcuePage(recordCount,size);
pageCount = handlePage.getPageCount();
rs.beforeFirst();
%>
<body>
<table width= "741 " border= "0 " cellspacing= "0 " cellpadding= "0 ">
<tr>
<td height= "38 " > <table width= "709 " border= "0 " cellspacing= "0 " cellpadding= "0 ">
</table> </td>
</tr>
<tr>
<td height= "34 " bgcolor= "#CCE0F5 "> <table width= "727 " border= "0 " cellspacing= "0 " cellpadding= "0 ">
<tr>
<td width= "140 "> 您当前的身份是:管理员 </td>
</tr>
</table> </td>
</tr>
<tr>
<td width= "741 " bgcolor= "#CCCCCC "> <table width= "741 " border= "0 " align= "left " cellpadding= "0 " cellspacing= "1 ">
<tr bgcolor= "C8E2FB ">
<td width= "77 " height= "29 " bgcolor= "#F2F4F6 "> <div align= "center "> 用户号 </div> </td>
<td width= "58 " bgcolor= "#F2F4F6 "> <div align= "center "> 名称 </div> </td>
<td width= "62 " bgcolor= "#F2F4F6 "> <div align= "center "> 口令 </div> </td>
<td width= "73 " bgcolor= "#F2F4F6 "> <div align= "center "> 性别 </div> </td>
<td width= "61 " bgcolor= "#F2F4F6 "> <div align= "center "> 岗位 </div> </td>
<td width= "46 " bgcolor= "#F2F4F6 " > <div align= "center "> 生日 </div> </td>
<td width= "77 " bgcolor= "#F2F4F6 " > <div align= "center "> 学历 </div> </td>
<td width= "168 " bgcolor= "#F2F4F6 " > <div align= "center "> 描述 </div> </td>
</tr>
<%
int gopage = 0;
String temp=request.getParameter( "gogo ");
if(temp==null||temp.trim().equals( " ")){
gopage=1;
}else{
gopage=Integer.parseInt(temp);
if(gopage < 1) {
gopage = 1;
}
if (gopage > pageCount) {
gopage = pageCount;
}
}
for(int k=0;k <(gopage-1)*size;k++)
rs.next();
int i=0;
while(rs.next()){
i++;
if(i> size)break;
%>
<tr align= "center " bgcolor= "f5f5f5 " onMouseOver= "this.style.background= '#EAEAEA ' " onMouseOut= "this.style.background= '#f5f5f5 ' ">
<td height= "24 "> <div align= "center "> <%=rs.getString( "C_Usr_Id ")%> </div> </td>
<td > <div align= "center "> <%=rs.getString( "C_Usr_Name ")%> </div> </td>
<td > <div align= "center "> <%=rs.getString( "C_Usr_Passwd ")%> </div> </td>
<td > <div align= "center "> <%=rs.getString( "C_Sex ")%> </div> </td>
<td > <div align= "center "> <%=rs.getString( "C_Degree_Id ")%> </div> </td>
<td > <div align= "center "> <%=rs.getDate( "D_Birthday ")%> </div> </td>
<td > <div align= "center "> <%=rs.getString( "C_Education ")%> </div> </td>
<td > <div align= "center "> <%=rs.getString( "C_Usr_Comment ")%> </div> </td>
</tr>
<% }
if(rs!=null) {
rs.close();
}
db.freeConnection();//关闭连接
%>
</table> </td>
</tr>
</TABLE>
<TABLE cellSpacing=1 cellPadding=0 width= "740 " border=0>
<TBODY>
<tr> <TD width= "8 " height=23 bgcolor= "f5f5f5 "> </TD>
<TD class=forum_oran align= "center " width= "70 " bgcolor= "f5f5f5 "> <a
href= "CXroot.jsp?gogo(1) "> 首页 </a> </TD>
<TD class=forum_oran align= "center " width= "81 " bgcolor= "f5f5f5 "> <a
href= "CXroot.jsp?gogo= <%= gopage-1 %> "> 上一页 </a> </TD>
<TD class=forum_oran align= "center " width= "72 " bgcolor= "f5f5f5 "> <a
href= "CXroot.jsp?gogo= <%= gopage+1 %> "> 下一页 </a> </TD>
<TD class=forum_oran align= "center " width= "83 " bgcolor= "f5f5f5 "> <a
href= "CXroot.jsp?gogo= <%=pageCount%> "> 尾页 </a> </TD>
<TD vAlign=top width= "160 " bgcolor= "f5f5f5 ">
<form name= "form1 " method= "post " action= "CXroot.jsp ">
跳到第 <select name= "gogo " OnChange= "document.forms[0].submit() ">
<script language= "JavaScript ">
for(i=1; i <= <%=pageCount%> ; i++)
document.write( " <option value= "+i+ "> "+i+ " </option> ")
document.forms[0].gogo.options[ <%= gopage-1 %> ].selected = true;
</script>
</select> 页 </form> </TD>
<td width= "9 " bgcolor= "f5f5f5 "> </td>
<TD width= "188 " bgcolor= "f5f5f5 "> 共 <%= pageCount %> 页,当前为第 <%= gopage %> 页 </TD>
<TD width= "59 " bgcolor= "f5f5f5 "> </TD>
</tr>
</TBODY>
</TABLE>
</BODY>
</HTML>
[解决办法]
你这是多表查询了。。本身也比单表的慢。。。
你试试先一个主要表while,然后出现的关联字段进行if查询,看看这样的速度,与这个比如何。。
我个人感觉,换成这样的写法,速度有所提升
[解决办法]
用连接池……也可以提高些效率……