gpt4 book ai didi

mysql - 如何优化多表连接 View 以获得更快的响应?

转载 作者:行者123 更新时间:2023-11-29 11:44:45 25 4
gpt4 key购买 nike

问题陈述

我有一个页面,它必须显示来自多联接查询的记录( View 由不同表和 subview 上的多个联接组成)。随着时间的推移,正在连接的六个表中的两个表大小增长非常快,在此过程中查询变得越来越慢

无权重新设计架构,我应该使用现有表格并显示可用数据的摘要。用户可以选择在多个列值和范围内过滤主数据,因此对于每个过滤/取消过滤操作,我都会点击存储库。

我尝试了什么?

  • 我已经尽可能使用索引优化了表格。
  • 我已为 mysql 服务器迁移到内存和 CPU 功率更高的计算机

正在使用的技术说到实现,它是 MySQL 数据库,上面有 SpringJPA+Hibernate。其中两个表有超过一百万条记录,目前存储库查询需要 20 秒的时间,这是 Not Acceptable 。

关于如何优化(例如在内存缓存/数据库中使用或尝试)的任何提示?我感谢任何正确方向的指点!

最佳答案

拉姆,

由于我们无法访问您当前的查询,或者至少无法访问您应该尝试的预期输出:

  1. 尽可能多地缓存数据。您可以采取以下策略:

    1.1。创建一个中间表来存储全局数据,以便快速搜索1.2 缓存所使用的查询数据并将其与条件哈希相关联。看看Redis,他速度很快,每次可以存储很多信息;

  2. 如果您的搜索中不需要所有联接,则不要执行所有联接;
  3. 如果可能,请尝试在查询中实现延迟加载 ( https://en.wikipedia.org/wiki/Lazy_loading )。
  4. 分割你的输出。例如,如果您有月份数据,请缓存每个关闭月份的数据,以便您可以将查询集中在最近的数据
  5. 将输出分成小步骤。如果您可以将查询分解为更小的子集并单独呈现每个子集,请使用 Ajax,以便用户可以看到他的数据已经出现。

由于我们显示大量统计数据,我的开始屏幕通常需要 2 分钟才能显示。因此,我们将其分成更小的页面(使用 4 和 5)并大量使用缓存(1.2)。现在它在 1 秒内加载(渲染图表需要时间)。

祝你好运

关于mysql - 如何优化多表连接 View 以获得更快的响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35151075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com