问题陈述
我有一个页面,它必须显示来自多连接查询的记录(视图由不同表和子视图上的多个连接组成)。随着时间的推移,正在加入的六个表中有两个非常快速地增长,在此过程中查询变得越来越慢。
我无权重新设计架构,我应该使用现有的表格和显示摘要可用的数据。用户可以选择在多个列值和范围内过滤主数据,因此对于每个过滤器/未过滤器操作,我都会访问存储库。
我尝试了什么?
正在使用的技术 实现它的MySQL DB,SpringJPA + Hibernate就在它之上。其中两个表有超过百万条记录,目前存储库查询需要20秒的时间,这是不可接受的。
有关如何优化的任何提示,如在内存缓存/数据库中使用或尝试?我很欣赏正确方向的任何指针!
答案 0 :(得分:1)
拉姆
由于我们无法访问您当前的查询,或者至少有预期的输出,您应该尝试:
尽可能多地缓存数据。你可以采取以下策略:
1.1。创建一个中间表来存储全局数据,以便快速搜索 1.2缓存使用的查询数据并将其与条件哈希相关联。看看Redis,他非常快,每次都可以存储大量信息;
我有一个开始屏幕,由于我们显示的大量统计数据,用于显示2分钟。因此我们将其拆分为较小的页面(使用4和5)并大量使用缓存(1.2)。现在它加载1秒(渲染图表需要时间)。
祝你好运