最近遇到一个特别奇怪的问题,希望能有高手帮忙指点下。
1. 下面是我写的HQL
2. 实际上这段HQL里面的参数都是NULL,所有有效的where条件只有“zt=3”
3. 下面是用hibernate查询的打印日志。就执行这个HQL需要7秒的时间,太夸张了。
4. 把日志里面的SQL拿出来放到sqlplus下执行,只需要0.2秒。
5. 如果直接通过JDBC的方法执行这个SQL,发现时间也只需要1秒。
6. 如果我把HQL里的其他查询条件去掉,只留下“zt=3”,hibernate查询速度就只有1秒了。
请问下,慢的问题有可能出现在哪里呢?
------解决方案--------------------
查询条件多,关联多,必然会慢。hibernate要把HQL中的对象映射到表上去完成查询。
------解决方案--------------------
1、HQL需要解析你这复杂语句就很浪费时间
2、子查询较多。
------解决方案--------------------
跟你传不传null有什么关系?传不传null不一样需要解析。
------解决方案--------------------
有子查询一般都很慢