论坛首页 Java企业应用论坛

发疯Hibernate分页问题,性能优化!

浏览 39932 次
精华帖 (2) :: 良好帖 (0) :: 新手帖 (18) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-07-28  
Unmi 写道
移除 order by 语句时用的代码是
Pattern pattern = Pattern.compile("order\\s*by[\\w|\\W|\\s|\\S]*" 
        , Pattern.CASE_INSENSITIVE);

如果是子查询里有 order by 语句,岂不是会从子查询的 order by 开始全部截掉,包括主查询的条件。


是啊,所以说SpringSide的代码的参考价值很高啊,呵呵。
0 请登录后投票
   发表时间:2008-07-29  
Unmi 写道
移除 order by 语句时用的代码是
Pattern pattern = Pattern.compile("order\\s*by[\\w|\\W|\\s|\\S]*" 
        , Pattern.CASE_INSENSITIVE);

如果是子查询里有 order by 语句,岂不是会从子查询的 order by 开始全部截掉,包括主查询的条件。


为什么要把order by加到子查询里?
0 请登录后投票
   发表时间:2008-07-29  
我的建议:
  1、就是看看有没索引,这个设置好了 查询速度可以提高不少
  2、对于count的问题,我曾经这样做过 就是另写一个针对count的查询,理由是原来的查询基于hibernate的 有可能生成的sql过于繁琐,可能存在多表查询,当查询条件不针对于其它表的时候,完全可以改写为有一个对应的简便的sql查询。当然具体情况具体分析,在此我只是提出还有这样一种解决方案存在。
 
0 请登录后投票
   发表时间:2008-07-29  
count(*)? 有没有试过count(primary_key)?有一些数据库对count(*)会很慢的,postgresql几乎不对count(*)作任何优化,慢到要死,但换成count(pk)就飞快。
0 请登录后投票
   发表时间:2008-07-29  
第一次检索都要计算count值,传到页面做缓存;
from 表 发生变化,如join不同的表 也要重新计算count;
from表或者多表有增删操作,使用aop通知Pager重新计算count;
0 请登录后投票
   发表时间:2008-07-30  
select count(1) from ..... 应该会好一点吧
0 请登录后投票
   发表时间:2008-07-31  
bhan2008 写道
select count(1) from ..... 应该会好一点吧


在Oracle下,count(1)和count(*)同样高效,其他数据库的效率不清楚,只要数据库优化,可能是也是一样的。

参考自
http://www.itpub.net/viewthread.php?tid=592976&extra=&page=3
0 请登录后投票
   发表时间:2008-07-31  
mysql数据库里面select count(*)时不能在条件里面加子查询,否则速度超级慢。
0 请登录后投票
   发表时间:2008-07-31  
count(*) 有性能问题?  优化数据库看看~~
0 请登录后投票
   发表时间:2008-08-01  
根据业务来.数据量小,就count(*),量大就改策略如提前缓存.
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics