论坛首页 Java企业应用论坛

springside学习中遇到的问题

浏览 18203 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-12-29  
无论怎么看,只要是没有做SQL语法解析的,都可能出问题,还得找ajoo的JRC,look:http://www.iteye.com/topic/21903
0 请登录后投票
   发表时间:2006-12-29  
关键他修改的是hql的查询语句,而不是sql的查询,hql是不支持象
select ... from (select ...)

这样的子查询的,hql好象只能在where条件中使用子查询.
0 请登录后投票
   发表时间:2006-12-29  
后来证实了一些想法,lz说的嵌套子查询的效率是没有问题的,40w条数据两种查询方式的差距在0.01s以内。

如果按照我所说,干掉group by这样的汇总条件,是会导致结果集数量变化的。所以只能干掉order by,而保留group by.
保留group by 必须保持原有select .....from .. where .. group by...。
所以为了解决这个问题,只有使用select count(*) from (select ... from .. where.. )才是正道。

我从一开始就没有完全理解lz的意思,多包含。
0 请登录后投票
   发表时间:2006-12-30  
可是就我现在看到的好几个封装都是像我帖的这样的(springside,feling的一个帖子里的(http://www.iteye.com/topic/14657),俺们公司用的。。。),我怀疑是不是有些道理在里面,所以希望有达人指点下呀,这个东西应该是每个项目很基础的东西,不知道怎么回事回答的人却没有:(
0 请登录后投票
   发表时间:2006-12-30  
1> oracle 8i 以前的版本就不支持在子查询中使用order by。
2> select count(*) from table_a 和 select count(*) from table_a order by field_c 或者 select count(*) from (select * from xxx ) 性能上的差距有的时候会达到几十或者上百的数量级。随着数据量,索引字段,数据的分布,服务器的配置有很大的不同,简单的试验不具有代表性

确实count(*)怎么算出来是很难一下子搞清楚的,比如说使用了union等集合操作,那么就不能简单地删除from前面的子句。(不过HQL 好像不支持union)
0 请登录后投票
   发表时间:2006-12-30  
不知道各位用的这一层的dao是封装成什么样子的?有没有朋友可以发上来看看呢。
0 请登录后投票
   发表时间:2006-12-30  
上面不是说了嘛,hibernate的hql不支持这样的查询
select ... from (select ...)
没人看到?所以只有使用楼主一开始说的方法,并不是效率方面的考虑。
0 请登录后投票
   发表时间:2006-12-30  
janh 写道
上面不是说了嘛,hibernate的hql不支持这样的查询
select ... from (select ...)
没人看到?所以只有使用楼主一开始说的方法,并不是效率方面的考虑。
hql是这样的,我说的是sql。
0 请登录后投票
   发表时间:2006-12-30  
我想应该有办法调用hibernate的api来生成sql,再对生成的sql进行修改,加上select count(*) from ... 去掉后面的order,用sql查询返回总数量,不知道有没有人做过。
0 请登录后投票
   发表时间:2006-12-31  
jianfeng008cn 写道
ls的兄弟,还有数据库不支持这样的子查询?能否举个例子呀,我现在就用过oracle sqlServer mysql

记得informix好像不支持
0 请登录后投票
论坛首页 Java企业应用版

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