java web开发多条件查询速度很慢 100

我做了个查询系统,把表里的数据显示到页面,用struts2和hibernate,分页用的是hibernate分页,表里数据非常多,表的索引之类的都做好了,现在是查询所有的... 我做了个查询系统,把表里的数据显示到页面,用struts2和hibernate,分页用的是hibernate分页,表里数据非常多,表的索引之类的都做好了,现在是查询所有的数据速度很快,在页面十几秒就行显示,但是只要数据条件,如数据一个时间段的话要6分钟左右才能查出来,我把我的hql语句放到数据库里面几秒钟就能把数据查出来了,请高手告诉我这是为什么,下面附我查询的dao语句上面是按条件查询数据,下面两张图是按条件查询总页数的,难道是我的条件查询语句有问题吗,为什么不输入查询条件就很快就能查出来,有条件就很慢 展开
 我来答
风丫小满
2014-08-28 · TA获得超过111个赞
知道答主
回答量:49
采纳率:0%
帮助的人:21.3万
展开全部
代码需要优化。例如:String类型判断飞空,用common-lang下的StringUtils.isEmpty(str)或者StringUtils.isNotEmpty(str);况且hql查询本来就不及于jdbc,这种查询单张表的,建议不如用原生jdbc查询速度来的快。
追问
我一开始就是用jdbc做的 但是查询速度更慢呢,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
anglewang98
2014-08-28 · TA获得超过535个赞
知道小有建树答主
回答量:420
采纳率:80%
帮助的人:285万
展开全部
shangche这个时间字段有加索引吗?是否加过组合索引?最简单是找dba分析sql池,避免全表索引。还不行,一段一段加时间戳,分析每段代码的执行时间呗。调优直接看代码只能排除明显的低效率代码,比如循环中执行sql子查询。
追问
shengche有加索引,不是组合索引,后面说的一段一段加时间戳是啥意思,具体要怎么做啊
追答
加log呗,用log4j或slf4j,打debug日志,
在需要分析的每个段程序开始时Date start = new Date() 结束时做Date end= new Date()
然后logger.info(“---totoal time[”+end.getTime() -start.getTime()+"]");
执行查询,运行需要分析的程序。
然后看console或日志文件呗。
调优sql的时候,用sql分析器分析执行计划。不要直接执行hql,直接分析原始sql。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一直不变的
2014-08-28 · TA获得超过144个赞
知道答主
回答量:197
采纳率:0%
帮助的人:49.8万
展开全部
你好像在内存里分页的,所以比你查询所有的数据要慢。因为查询出来还处理了一下
更多追问追答
追问
在内存里分页是啥意思,要怎么改
追答
刚我说的有点问题,说错了是内存过滤下,不是内存分页,刚吃饭去着急写错了,是这样的,where条件是在查询数据出来之后(在from join  之后)才开始执行的,所以where加了层过滤肯定慢了,然后呢,where层的执行顺序是从后向前,所以这也要求你写where条件的时候需要把能过滤掉数据最大的放到最后,所以你的语句是查询出来数据在内存了过滤了下,希望能帮到你
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
n_weimin
2014-08-28
知道答主
回答量:10
采纳率:0%
帮助的人:1.2万
展开全部
changche和state都加索引了吗
追问
都加了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式