【前端VUE】【后端SSM】 记录一次多条件查询状态下加载极慢的解决思路和解决方案
最近在开发一个Online Judge系统,其中有一个“挑战模式”模块,如图所示

由于是第一次使用ECharts做开发,所以完成整个模块的过程也是边写边学了,记录一下问题:
遇到的问题:在最开始进行测试的时候,一共有107个模块作为节点,节点之间还未设置关联关系,但是加载完全的用时达到了2s至3s。
解决的思路:
(1)毫无疑问,ECharts的渲染成为了我第一个怀疑的对象,我认为是渲染的配置没有配置好,所以我通过查阅ECharts的相关文档,修改了一些参数,但是效果并不明显。
(2)我重新设计了一下信息传递的逻辑,分为 从后端获取数据 - 处理数据以符合ECharts需要 - 装载数据进入ECharts中 三个步骤,对每个步骤测试了用时,最后发现是从后端获取数据的用时最长,思维定势认为是渲染慢导致的问题并不存在,ECharts作为大厂的开源作品其实做的很好,不会成为耗时瓶颈(官方文档的demo有超过十万个节点的图例,但没有出现耗时问题)。问题就这么定位出来了,是数据获取出现了问题。
(3)问题定位出来是数据获取的问题,而且我是在本地测试环境下进行前后端通信的,所以网络延迟不考虑,那么只能是在后端里出了问题了。逐一查看数据从数据库进入到mapper层再到service层再到controller层的过程,发现是数据库的查询过于缓慢,分析发现,查询条件过多但是其中有一个where子句的字段没有使用索引。于是添加索引,boom,取数据的耗时从2s的耗时降到了0.2s左右,问题解决。
解决方案:对数据库的SQL语句的where子句用到的字段加上索引。索引的原理大致就是建立一个索引表,索引表内有原表这个字段的全部值,对应着包含该字段的记录的存储地址。简单来说,假设有一个student表内有100条记录,字段sid建立了索引,并且 sid = 1 有9条记录,那么,在索引表内就会有
sid = 1 记录 = 地址1,地址2... 地址9;
sid = 2 记录 = 地址10,地址11...;
查询 SELECT * FROM student WHERE sid = 1时,那么数据库就会先在索引表内找到sid=1时对应的记录的物理地址,完成查找,就不需要扫描全表去找了。
每个DBMS实现索引的方式是不同的,但是具体的思路是一致的,详情可以看这篇博客:https://blog.csdn.net/tongdanping/article/details/79878302
【前端VUE】【后端SSM】 记录一次多条件查询状态下加载极慢的解决思路和解决方案的更多相关文章
- 基于 Vue.js 的移动端组件库mint-ui实现无限滚动加载更多
通过多次爬坑,发现了这些监听滚动来加载更多的组件的共同点, 因为这些加载更多的方法是绑定在需要加载更多的内容的元素上的, 所以是进入页面则直接触发一次,当监听到滚动事件之后,继续加载更多, 所以对于无 ...
- vue路由管理-保留滚动位置功能、按需加载模块名自定义
路由管理:保留滚动位置 其实现与组件的keep-alive相关,仅设置了keep-aive的页面,实施保留回退位置能力. keep-alive介绍 作用 把切换出去的组件保留在内存中,可以保留它的状态 ...
- Vue(小案例_vue+axios仿手机app)_上拉加载
---恢复内容开始--- 一.前言 ...
- Vue 动态图片加载路径问题和解决方法
最近在做一个树形结构的组件,使用了Vue和element UI中el-tree组件.因为树中每个节点都需要显示一个图标图片,并且需要根据后台传入的数据类型动态地显示,所以图片的路径需要动态地加载.下面 ...
- vue项目中,单页图片过多,使用懒加载
最近做项目,一页图片很多,加载的时候效果很差. 通过学习借鉴其他大神的方法,使用了插件vue-lazyload,使用这个插件,界面更美观了,加载的效果好起来. 安装 npm i vue-lazyloa ...
- Java代码自动生成,生成前端vue+后端controller、service、dao代码,根据表名自动生成增删改查功能
本项目地址:https://github.com/OceanBBBBbb/ocean-code-generator 项目简介 ocean-code-generator采用(适用): ,并使用m ...
- 前端nginx后端tomcat记录真实ip
修改nginx主配置文件:/usr/local/nginx/conf/nginx.conf proxy_set_header Host $host; proxy_set_header X-Real-I ...
- 前端自动化构建工具webpack (二)之css和插件加载总结
1. webpack只识别js文件,其他文件都需要转换成js文件.所有文件都是模块; 2. css解析 css需要css-loader --->style-loader ----- ...
- nginx设置反向代理后端jenklins,页面上的js css文件无法加载
转载 2017年06月14日 22:36:59 8485 问题现象: nginx配置反向代理后,网页可以正常访问,但是页面上的js css文件无法加载,页面样式乱了. (1)nginx配置如下: (2 ...
随机推荐
- Python开发【第一篇】:目录
本系列博文包含Python基础.前端开发.Web框架.缓存以及队列等,希望可以给正在学习Python编程的朋友们提供一点帮助! .Python开发[第一篇]:目录 .Python开发[第二篇]:初始P ...
- Halcon一日一练:图像设备介绍
Halcon在设计之初就提供了完整的图像采集方案,适应了多种图像设备采集图像,以及各种不同环境的采集方案. 通常情况下,图像的采集应该是所有机器视觉项目首要解决的任务,不幸的是,需要解决图像采集的问题 ...
- Head First设计模式——装饰者模式
前言:对于设计模式我们有时候在想是否有必要,因为实际开发中我们没有那么多闲工夫去套用这么多设计模式,也没有必要为了模式而模式. 通常这些模式会引入新的抽象层,增加代码的复杂度,但是当我们掌握了这些设计 ...
- 使用IIS部署网站
使用IIS部署网站的步骤: IIS安装:控制面板->启用或关闭Windows功能->Internet信息服务->应用程序开发功能,勾选.net和asp相关的,和服务器端包含 ASP. ...
- shell变量(二)
变量名的命名规范: 1.命名只能使用英文字母.数字和下划线,且不能以数字开头: 2.不能存在空格‘: 3.不能使用标点符号: 4.不能使用bash里的关键字(可使用help命令查看保留关键字) 变量的 ...
- 备战双 11!蚂蚁金服万级规模 K8s 集群管理系统如何设计?
作者 | 蚂蚁金服技术专家 沧漠 关注『阿里巴巴云原生』公众号,回复关键词"1024",可获取本文 PPT. 前言 Kubernetes 以其超前的设计理念和优秀的技术架构,在容器 ...
- 基准测试了 ArrayList 和 LinkedList ,发现我们一直用 ArrayList 也是没什么问题的
ArrayList 应该是 Java 中最常用的集合类型了,以至于我们说到集合就会自然而然的想到 ArrayList.很多同学都没有用过除了 ArrayList 之外的其他集合,甚至于都已经忘了除了 ...
- SpringBoot之响应式编程
一 Spring WebFlux Framework说明 Spring WebFlux 是 Spring Framework 5.0 中引入的新 reactive web framework.与 Sp ...
- Fine-Grained(细粒度) Image – Papers, Codes and Datasets
Table of contents Introduction Survey papers Benchmark datasets Fine-grained image recognition Fine- ...
- 记 Maven 本地仓库埋坑之依赖包为何不能用
记一次 Maven 本地仓库埋坑之 Verifying Availability 背景 某 Java 后端项目使用 maven 构建,因为某些原因,某些依赖库下载不了,直接找其它人索要了他电脑上的 m ...