后果:
查询时,10000条记录要7分钟!
关联关系:
public class TrailRecord {
Long id,
Knowledge knowledge,
Date borwseTime
}
public class TrailSession {
Long id,
User user,
}
查询HQL代码:
getHibernateTemplate().setMaxResults(amount);
String hql = "select r.knowledge from TrailRecord r where r.browseTime in (select max(t.browseTime) as btime from TrailRecord t where t.trailSession.user=? and t.knowledge.deleted=false group by t.knowledge) order by r.browseTime desc";
return getHibernateTemplate().find(hql, new Object[]{user});
生成的SQL:
select knowledge1_.N_BH as N1_0_,
knowledge1_.B_Deleted as B2_0_,
knowledge1_.C_Content as C3_0_,
knowledge1_.D_CreateDate as D4_0_,
knowledge1_.N_Type as N15_0_
from T_TrailRecord trailrecor0_
inner join T_Knowledge knowledge1_ on trailrecor0_.N_Knowledge =
knowledge1_.N_BH
where trailrecor0_.D_BrowseTime in
(select max(trailrecor2_.D_BrowseTime)
from T_TrailRecord trailrecor2_,
T_TrailSession trailsessi3_,
T_Knowledge knowledge4_
where trailrecor2_.N_TrailSession = trailsessi3_.N_BH
and trailrecor2_.N_Knowledge = knowledge4_.N_BH
and trailsessi3_.N_User = 1
and knowledge4_.B_Deleted = 0
group by trailrecor2_.N_Knowledge)
order by trailrecor0_.D_BrowseTime desc limit 11
问题已经解决了,但是还是没有完全弄明白生成的SQL为什么这么慢。请帮忙分析下。
分享到:
相关推荐
一、HQL语句in中带参数的写法 在HQL语句中,使用in关键字可以实现集合参数的传递,例如: ```java String hql = "FROM Login login WHERE login.id in (:ids)"; ``` 其中,`:ids`是参数的名称,需要在map中进行设置...
### HQL的几种常见写法 #### 概述 HQL(Hibernate Query Language)是Hibernate框架提供的一种查询语言,它支持面向对象的语法结构,并且能够很好地与Java对象模型进行映射。通过HQL,开发者可以更加灵活地操作...
"Hibernate-HQL语句多对多写法" Hibernate 是一个流行的 Java 持久层框架,它提供了强大的对象关系映射(ORM)功能,使得开发者可以方便地与数据库交互。但是,在使用 Hibernate 时,我们经常会遇到多对多关系的...
HQL语句 HQL语句 HQL语句 HQL语句 HQL语句
通过上述分析,我们可以看出HQL不仅提供了一种直观的方式来处理数据库查询,而且还包含了丰富的功能,使得数据检索变得更加灵活和高效。这对于开发基于Hibernate的应用程序而言,无疑是一大福音。开发者可以利用HQL...
**HQL(Hibernate Query Language)**是Hibernate框架中推荐的标准查询语言,它是针对对象的查询语言,具有类似于SQL的语法,但更加强调面向对象的特性。HQL被设计用来查询和操作持久化对象,提供了比Criteria查询更...
总的来说,血缘关系解析工具的源码分析与HQL集合的静态分析相结合,是数据治理领域中一种强大的工具,它提供了深入洞察数据流动和依赖关系的能力,对于任何处理大规模HQL查询的组织来说都是不可或缺的。通过理解和...
Hql PPt Hql PPt
为了提高效率并减少网络传输开销,HQL(Hibernate Query Language)提供了一种灵活的方式来实现这一目标。HQL是Hibernate框架中的一个核心特性,它允许开发者以面向对象的方式编写查询语句,从而简化了数据库操作...
HQL(Hibernate Query Language)是一种面向对象的查询语言,它提供了灵活而强大的数据检索方式,使开发人员能够更高效地与数据库交互。本文将详细介绍HQL的基本用法及高级特性。 #### 1. 查询所有记录(Select) ...
HQL(Hibernate Query Language)是一种面向对象的查询语言,它提供了与SQL类似的功能,但更贴近于面向对象编程的思维方式。HQL允许开发人员以一种更自然的方式查询数据库,同时保持了Java对象模型的一致性。 #### ...
不喜欢使用myEclipse的朋友可以尝试下 最近在项目中使用Hibernate,由于需要使用HQL,找了很多资料,大都是MyEclipse中自带的HQL工具。 由于MyEclipse是收费的,速度不是很理想。所以在网上找到了一个elipse插件 ...
通过上述介绍可以看出,HQL作为一种面向对象的查询语言,在Hibernate框架中扮演着非常重要的角色。它不仅简化了数据访问层的开发工作,而且还提高了代码的可读性和可维护性。同时,Hibernate还提供了多种查询方式供...
HQL,全称为Hibernate Query Language,是Hibernate框架提供的一种面向对象的查询语言。与SQL(Structured Query Language)不同,HQL是专为ORM(Object-Relational Mapping)设计的,它允许开发者以类和对象的方式...
在Hibernate中,HQL(Hibernate Query Language)是其内置的一种面向对象的查询语言,它是SQL的面向对象版本,用于检索和操作持久化对象。HQL查询的使用极大地提高了开发效率,因为它将数据操作与具体的数据库结构...
【HQL简介】 HQL,全称Hibernate Query Language,是Hibernate框架中推荐的主要查询语言。它是面向对象的,设计用于处理持久化对象的查询,同时借鉴了SQL的语法结构,使得开发人员能够以更接近数据库操作的方式进行...
根据给定的文件信息,我们可以深入...总之,HQL提供了一种灵活且强大的方式来操作数据库,尤其是在Java环境下集成Hibernate框架时。通过深入理解和熟练掌握HQL查询技巧,可以显著提高数据库操作的效率和程序的健壮性。
根据提供的文件信息,本文将详细解析HQL(Hibernate Query Language)中的模糊查询技术,并通过具体的代码示例来阐述不同方式下的实现方法。 ### HQL模糊查询概述 HQL是Hibernate框架提供的一种面向对象的查询语言...
在Java开发中,尤其是在处理大量数据持久化时,Hibernate作为一个强大的对象关系映射(ORM)工具,极大地简化了数据库操作。而HQL作为Hibernate的核心组成部分,它的掌握对于Java开发者来说至关重要。 1. **HQL简介...
**HQL** 是Hibernate框架中的一种查询语言,它是SQL的一个面向对象的抽象层,旨在简化Java应用程序与数据库之间的交互。HQL支持类名、属性名作为查询语句的一部分,使得查询更接近于面向对象的思维方式,而不是直接...