首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

怎么使查询数据的数据更快些

2012-01-28 
如何使查询数据的数据更快些下面是我从数据里查询出来的数据,现在查询的数据很慢,大家帮我看看如何优化HT

如何使查询数据的数据更快些
下面是我从数据里查询出来的数据,现在查询的数据很慢,大家帮我看看如何优化
<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 "> 您当前的身份是:管理员&nbsp; </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 "> &nbsp; </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 "> &nbsp; </td>
<TD   width= "188 "   bgcolor= "f5f5f5 "> 共 <%=   pageCount   %> 页,当前为第 <%=   gopage   %> 页 </TD>
<TD   width= "59 "   bgcolor= "f5f5f5 "> &nbsp; </TD>
    </tr>
</TBODY>
</TABLE>
</BODY>
</HTML>

[解决办法]
你这是多表查询了。。本身也比单表的慢。。。
你试试先一个主要表while,然后出现的关联字段进行if查询,看看这样的速度,与这个比如何。。
我个人感觉,换成这样的写法,速度有所提升
[解决办法]
用连接池……也可以提高些效率……

热点排行