【java】itoo项目实战之大数据查询之使用 new map 优化hibernate之级联查询
2017-06-15 09:11
465 查看
在我的上一篇博客《【java】itoo项目实战之hibernate
懒载入优化性能》中,我曾提到过学生数据有2万条,查询数据十分的慢,这是让人非常受不了的事情。看着页面进度条一直转着圈圈,那种着急的感觉真的没法形容。
最開始考虑着使用lazy
来优化,由于前台框架的原因,lazy 优化并没有起到什么左右。后来就想着有select new map
优化。我先来画画关于查询学生的级联树
这个树的意思就是查询学生的时候它的深度是4级。
在没有优化之前,使用的是hibernate的hql
语句:From Student where isDelete =?
运行语句的时候。会发出467条语句打印到控制台上,打的满屏都是。看控制台的时候,看着就感觉头晕。
优化的时候。选择用selectnew map
进行优化,语句例如以下:
select newmap(S.id as id, S.name as name,S.comment as comment,S.remark asremark,S.accountAddress as accountAddress,S.code as code,S.email asemail,S.entranceDate as entranceDate,S.graduateSchool
asgraduateSchool,S.identityCardID as identityCardID,S.classes.className asclassName,S.classes.institution.institutionName asinstitutionName,S.classes.institution.parentInstitution.institutionName asparentInstitution,S.classes.institution.schoolLevel.levelName
aslevelName,S.classes.institution.id as institutionId,S.professional.professionalCodeas professionalCode) from Student S where S.isDelete =:isDelete
在打印语句的时候是1条。看控制台打印出来的结果还是挺舒服的。
可是他们的时间差例如以下:
从上表中能够看出,时间差得还是挺多的。在这里我有些事想不明确:
1.使用new map
查询的时候。尽管仅仅打印一条语句,它须要进行全表扫描,查询的次数并不少。而hibernate的hql
语句把每次查询的语句都打印出来了。
可是它的查询时间相对new map来说,为什么会变长呢?
2.hibernate的hql
语句级联查询时间过长的原因会不会跟hibernate的缓存有关系?每次查询结果都须要放到1,2级缓存中。
3.关于hibernate的查询语句这样设计的原因是什么,当初hibernate的大牛们设计的时候。是处于什么考虑的?
以上的三个问题我眼下没有找到相关的资料来解答,假设哪位看到了,能够相互讨论一下.
懒载入优化性能》中,我曾提到过学生数据有2万条,查询数据十分的慢,这是让人非常受不了的事情。看着页面进度条一直转着圈圈,那种着急的感觉真的没法形容。
最開始考虑着使用lazy
来优化,由于前台框架的原因,lazy 优化并没有起到什么左右。后来就想着有select new map
优化。我先来画画关于查询学生的级联树
这个树的意思就是查询学生的时候它的深度是4级。
在没有优化之前,使用的是hibernate的hql
语句:From Student where isDelete =?
运行语句的时候。会发出467条语句打印到控制台上,打的满屏都是。看控制台的时候,看着就感觉头晕。
优化的时候。选择用selectnew map
进行优化,语句例如以下:
select newmap(S.id as id, S.name as name,S.comment as comment,S.remark asremark,S.accountAddress as accountAddress,S.code as code,S.email asemail,S.entranceDate as entranceDate,S.graduateSchool
asgraduateSchool,S.identityCardID as identityCardID,S.classes.className asclassName,S.classes.institution.institutionName asinstitutionName,S.classes.institution.parentInstitution.institutionName asparentInstitution,S.classes.institution.schoolLevel.levelName
aslevelName,S.classes.institution.id as institutionId,S.professional.professionalCodeas professionalCode) from Student S where S.isDelete =:isDelete
在打印语句的时候是1条。看控制台打印出来的结果还是挺舒服的。
可是他们的时间差例如以下:
从上表中能够看出,时间差得还是挺多的。在这里我有些事想不明确:
1.使用new map
查询的时候。尽管仅仅打印一条语句,它须要进行全表扫描,查询的次数并不少。而hibernate的hql
语句把每次查询的语句都打印出来了。
可是它的查询时间相对new map来说,为什么会变长呢?
2.hibernate的hql
语句级联查询时间过长的原因会不会跟hibernate的缓存有关系?每次查询结果都须要放到1,2级缓存中。
3.关于hibernate的查询语句这样设计的原因是什么,当初hibernate的大牛们设计的时候。是处于什么考虑的?
以上的三个问题我眼下没有找到相关的资料来解答,假设哪位看到了,能够相互讨论一下.
相关文章推荐
- 【java】itoo项目实战之大数据查询之使用 new map 优化hibernate之级联查询
- 【java】itoo项目实战之百万数据查询优化收集与实践
- 【java】itoo项目实战之hibernate 懒载入优化性能
- 【java】itoo项目实战之hibernate 批量保存优化
- 【java】itoo项目实战之hibernate 批量保存优化
- 【java】itoo项目实战之hibernate 懒加载优化性能
- 关于java项目操作优化查询数据
- 【java】itoo项目实战之常被忽视的性能优化
- java项目中使用JDBC连接mysql数据库查询数据
- 【java】itoo项目实战之优化后具体代码
- Extjs分页使用java实现数据库数据查询
- 使用hibernate保存blob大数据,ibatis查询blob大数据
- 关于Hibernate性能优化之 FetchType=Lazy时查询数据
- Hibernate使用sql查询出map类型数据
- Hibernate查询,数据库中无数据正常,有数据出现java.lang.NullPointerException 空指针异常
- 实战突击:Java Web项目整合开发光盘使用
- Java项目数据交互效率优化整理
- Java中基本数据类型和包装数据类型在Hibernate中使用
- java使用jdbc查询mysql数据最简单的例子
- Hibernate查询数据的几种方式以及HQL用法及参数的几种使用方法