论坛首页 招聘求职版 求职经验

请教两个面试题,当时没答出来

浏览 842 次
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2008-05-27 关键字: 面试
1.在数据库中条件查询速度很慢的时候,如何优化?
2.在hibernate中进行多表查询,每个表中各取几个字段,也就是说查询出来的结果集并没有一个实体类与之对应,如何解决这个问题?
   
最后更新时间:2008-05-27
1.在数据库中条件查询速度很慢的时候,如何优化?
建立正确有效的索引,是最通常的想法吧?
   
0 请登录后投票
最后更新时间:2008-05-27
1-感觉范围好大。。。最直接就是花钱加内存   如果用JAVA的话 可以用数据库连接池、缓存技术等,hibernate的话就是lazy延迟加载不需要的记录,数据库的话要避免全表扫描,建索引,数据文件跟重做日志文件放不同磁盘以避免IO争用等。
2-查出字段没POJO对应的话 那你用hibernate的话,也可以直接写SQL,不用HQL,查出来的东西就包在一个resultset里,你爱怎么处理就怎么处理咯。当然还有其他办法。。。
以上纯属自己的想法。。。经验不够。。。说错莫怪~
   
0 请登录后投票
最后更新时间:2008-05-27
rxgp02a 写道
1.在数据库中条件查询速度很慢的时候,如何优化?
2.在hibernate中进行多表查询,每个表中各取几个字段,也就是说查询出来的结果集并没有一个实体类与之对应,如何解决这个问题?

第一个问题。
1.建索引
2.减少表之间的关联
3.优化sql,尽量让sql很快定位数据,不要让sql做全表查询,应该走索引(具体怎么优化有专门的文章介绍)
4.简化查询字段,没用的字段不要,已经对返回结果的控制,尽量返回少量数据
第二个问题
解决方案一,按照Object[]数据取出数据,然后自己组bean
解决方案二,对每个表的bean写构造函数,比如表一要查出field1,field2两个字段,那么有一个构造函数就是Bean(type1 filed1,type2 field2) ,然后在hql里面就可以直接生成这个bean了。具体怎么用请看相关文档,我说的不是很清楚。
   
0 请登录后投票
最后更新时间:2008-05-27
rxgp02a 写道
1.在数据库中条件查询速度很慢的时候,如何优化?
2.在hibernate中进行多表查询,每个表中各取几个字段,也就是说查询出来的结果集并没有一个实体类与之对应,如何解决这个问题?


1,可以建索引,或者改变WHERE条件的顺序.

2.可以用一个数组来存储字段.
   
0 请登录后投票
最后更新时间:2008-05-27
谢谢大家的解答,尤其是wolfbrood,非常感谢。
   
0 请登录后投票
最后更新时间:2008-05-28
1、优化应该分成2个部分吧
第一就是从数据库的数据结构来优化,建索引,建表分区等等
第二就是sql语句的优化,把数据量大的表排在前面,where查询条件中查询出的数据
多的排前面;尽量少用子查询,不要用in之类的关键字,用exist,还有。。。。。
2、貌似实体表的xml里面有个batch-size属性吧,这个没具体研究,不过可以解决这个问题。我们用的是iBatis,比hibernate方便多了
   
0 请登录后投票
最后更新时间:2008-05-28
2.可以建一个动态bean
如:DynaBean dynaBean = new LazyDynaBean();之类的
或者直接利用hql取出每个表相对的pojo对象的数组.
   
0 请登录后投票
最后更新时间:2008-05-28
1、《Oracle语句优化规则汇总1-9》已经写的比较详细了。
http://news.newhua.com/news1/programming/2008/218/08218937442EA73C7DBK6JCH28IJ3G.html
2、http://lixw.javaeye.com/blog/75303
   
0 请登录后投票
论坛首页 招聘求职版 求职经验

跳转论坛:
JavaEye推荐