这个页面最奇怪的地方在于,无论数据的多少,加载的时间都在十六秒左右,首先描述一下这个JSP页面有大量的JS代码,有少部分JAVA代码,采用table布局,最内的table为显示数据用的,为了现实数据而采用Struts1标签的:iterate、logic:equal等,每次加载这个table都十多秒。开始我怀疑是SQL语句的问题,于是把HQL语句换为了SQL语句到PL/SQL中执行,证明了不是SQL语句的原因,不过该操作是一个牵涉了好几张表的查询,google上说是因为JS加载引起的,建议把JS代码放到最后,但是加载时间没变化,高手们!救命啊!

解决方案 »

  1.   

    你的sql是用hibernate执行的还是原始的jdbc?
      

  2.   

    用的Hibernate,页面上可选的查询条件较多,用了很多的判断来动态拼装HQL语句,什么连接池啊都用了,但是查询的效率还是慢!无论数据的多少!都得十多秒!跟踪好久这个问题好久了!还是没啊不能发解决!
      

  3.   

    这问题问得!1:什么数据库?
    2:表结构怎么样?
    3:查询语句是什么?
    4:页面的 DOM 结构是什么?
    5:数据如何呈现?
      

  4.   

    1、数据库用的是Oracle;
    HQL:select mainSheet from mainSheet in class com.hollycrm.unicom.sheet.lightweight.MainSheetInfo  left join mainSheet.dealSheetInfos ds where mainSheet.sheetFlowNO is not null and ds.sendTime = (select max(deal.sendTime) from deal in class com.hollycrm.unicom.sheet.lightweight.DealSheetInfo where deal.mainSheetFlowNO = mainSheet.sheetFlowNO) and mainSheet.status = '23' and mainSheet.categoryID in ('1','2','3','6','7') and mainSheet.handleDept = 'ff8080812dc1758a012dc5698255018a' order by ds.dealTime desc
    其中的条件是动态的,不过我列出了一个典型的查询;
    表都为一对多,MainSheetInfo为一方,数据的输出多用的是 <logic:iterate id="item" name="resultList" property="rowList"  indexId="index" scope="request"></logic:iterate>迭代用<bean:write></bean:write>显示,
      

  5.   

    很明显·LZ说用了SQLPLUS`那就是ORACLE··楼主也说了是多表的很多查询·所以可以肯定至少拥有一对多或者多对一的操作,查询语句不用说也知道肯定比纯SQL放在SQLPLUS里面慢·因为SQLPLUS本身就与数据库的链接更紧密·页面的DOM问又有何用?请火龙哥赐教·数据的呈现无外乎就是直接呈现或者隐藏在对象中··
    楼主,页面加载问题与很多问题相关··如果你拿到别的机子上运行·估计时间就会快些了·这和服务器相关··当然·最直接的关系就是你的HQL写得不好·导致了大量的甬余数据··
      

  6.   

    HQL:select mainSheet from mainSheet in class com.hollycrm.unicom.sheet.lightweight.MainSheetInfo left join mainSheet.dealSheetInfos ds where mainSheet.sheetFlowNO is not null and ds.sendTime = (select max(deal.sendTime) from deal in class com.hollycrm.unicom.sheet.lightweight.DealSheetInfo where deal.mainSheetFlowNO = mainSheet.sheetFlowNO) and mainSheet.status = '23' and mainSheet.categoryID in ('1','2','3','6','7') and mainSheet.handleDept = 'ff8080812dc1758a012dc5698255018a' order by ds.dealTime desc
    这句是代码中典型的HQL语句!其中有很多and都是在判断后根据条件产生的,希望大家能帮忙优化下!