介绍一种性能极差的HQL写法,帮忙分析上原因
介绍一种性能极差的HQL写法,帮忙分析下原因后果:查询时,10000条记录要7分钟!关联关系:select max(this_.D_
介绍一种性能极差的HQL写法,帮忙分析下原因
后果:
查询时,10000条记录要7分钟!
关联关系:
select max(this_.D_BrowseTime) as y0_, this_.N_Knowledge as y1_ from T_TrailRecord this_ inner join T_TrailSession trailsessi1_ on this_.N_TrailSession=trailsessi1_.N_BH where trailsessi1_.N_User=1 group by this_.N_Knowledge order by y0_ desc limit 11
只需要2ms 4 楼 wangqj 2007-10-26 in 比较慢 5 楼 raise 2008-09-05 [flash=200,200][/flash] 6 楼 davidgrubby 2008-09-06 ecsun 写道尽量不要用in查询
如果不用in能用什么代替呢,不一定是lz的例子,能不能稍微解释一下?谢谢 7 楼 nihongye 2008-09-06 貌象在where里的子查询,mysql会执行n次子查询,n约等于外部表记录数量。 8 楼 rainerWJY 2008-09-06 用in的话最好还是用temp表好些,尤其是对mysql这样的。
字段必须建索引 9 楼 duooluu 2008-09-07 还是子查询效率太低了,假如记录数为n,那个子查询会被执行n多次 10 楼 nihongye 2008-09-08 duooluu 写道还是子查询效率太低了,假如记录数为n,那个子查询会被执行n多次
不能一概而论,只是mysql的实现比较笨 11 楼 rxgp02a 2008-09-08 楼上几位好像跑题了,现在讨论的是hibernate。 12 楼 jacky2007 2008-09-24 用EXISTS替代IN 13 楼 yefeng 2008-09-26 这种复杂的HQL,就直接写SQL好的,HIBERNATE里不是可以直接执行SQL的嘛