首页 > 数据库技术 > 详细

hsql数据量大的时候 left join 查询非常慢

时间:2014-08-07 07:30:30      阅读:508      评论:0      收藏:0      [点我收藏+]

最近遇到使用hsql查询两张表的时候,发现一旦left join就差些很慢,单独查很快,不知道为什么。

然后听说hsql只要数据量稍微大点,再 join一下就很慢,绞尽脑汁想到了一天终于想到办法了。

于是拆分sql把依然使用left join,但是事先把两个表的结果集变小就可以left join了。例子如下

select p.parent_id,

       p.id,

       p.pid,

       p.c_name,

       p.path,

       p.params,

       p.p_type,

       p.area_code,

       p.appid,

       SUM(DECODE(a.name, ‘cpu‘, convert(a.value,SQL_DOUBLE), NULL)) AS cpu,

       SUM(DECODE(a.name, ‘mem‘, convert(a.value,SQL_DOUBLE), 0)) AS mem

  from  p

  left join  a

    on a.id = p.id

 where  p.id = ?

优化后的sql

select * from (select p.parent_id,p.id,  p.pid, p.c_name, p.path, p.params, p.p_type,  p.area_code, p.appid, from ims_nw.process p where p.id=?) pp 

 left join (SELECT D.SUB_RES_ID ,

 SUM(DECODE(D.NAME,‘mem‘,convert(d.value,SQL_DOUBLE),NULL)) AS mem,

 SUM(DECODE(D.NAME,‘cpu‘,convert(d.value,SQL_DOUBLE),0)) AS cpu 

  FROM    D   

 WHERE  D.ID=? 

GROUP BY D.ID) dd on pp.id=dd.ID 

查询速度从原来的4秒变成了0.4秒,满足了用户的要求。其中主要是把查询分成两个部分,每个部分单独查询出来,然后再关联,这样的查询速度就快了,大家可以借鉴一下。

hsql数据量大的时候 left join 查询非常慢,布布扣,bubuko.com

hsql数据量大的时候 left join 查询非常慢

原文:http://newhouse2000.blog.51cto.com/4355310/1536542

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!