优化hql以获得更好的性能

时间:2017-09-20 09:48:24

标签: postgresql grails hql

我遇到了一些遗留的hql。此查询大约需要150毫秒。正如您所看到的,代码非常复杂且几乎不可读,更不用说性能问题了。

select distinct pub.id, ret.sector.id, ret.poiSector.id, ret.id, man.id, 0
            from Publisher pub
             left join pub.retailer ret
             left join pub.manufacturer man
            where (
                pub.id in (
                   select publisher_id from Store AS s
                    where s.lat >= 52.297382 and s.lat <= 52.746616 and s.lng >= 13.047624 and s.lng <= 13.785276
                  group by 1
                   having min( sqrt( pow(111.3*(s.lat - 52.522), 2) + pow(67.7*(s.lng - 13.416), 2) ) ) is null or min( sqrt( pow(111.3*(s.lat - 52.522), 2) + pow(67.7*(s.lng - 13.416), 2) ) ) < 25
                )
                or
                (man is not null)
              )
             and (ret is null or ret.hidden is false)
            group by 1, 2, 3, 4, 5, 6

我打算拆分代码段,并尝试修改它以提高性能。我的问题是如何以有效的方式打破这个?这会有什么帮助吗?我没有系统的完全可见性,所以这是我现在可以给你的信息。

0 个答案:

没有答案