我遇到了一些遗留的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
我打算拆分代码段,并尝试修改它以提高性能。我的问题是如何以有效的方式打破这个?这会有什么帮助吗?我没有系统的完全可见性,所以这是我现在可以给你的信息。