【前端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+graphviz绘制数据结构关系图和指定目录下头文件包含关系图
作为一名linux系统下的C语言开发,日常工作中经常遇到两个问题: 一是分析代码过程中,各种数据结构互相关联,只通过代码很难理清系统中所有结构体的整体架构,影响代码消化的效率; 二是多层头文件嵌套包含 ...
- vue——同一局域网内访问项目
1.想要在手机上访问本地的vue项目,首先要保证手机和电脑处在同一局域网内(连着同一个无线网) 2.将你电脑的ip设置为固定ip(ipconfig查找本地的ip,然后修改它,改为你想变的数字) 3.在 ...
- 定制的print()输出格式
#定制print时的显示内容 #烤地瓜案例:主要显示格式digua("cd1","cd2","cd3""),而不是就直接在一个列表 ...
- Exception evaluating SpringEL expression:
Exception evaluating SpringEL expression:错误 说明: 在帮助同事看BUG的时候遇上了这个问题,不知道是前端还是后端的错误 在网上找了很多文章解决的方法,很多都 ...
- TCP Socket服务端客户端(二)
本文服务端客户端封装代码转自https://blog.csdn.net/zhujunxxxxx/article/details/44258719,并作了简单的修改. 1)服务端 此类主要处理服务端相关 ...
- 关于typedef和struct
在struct中使用自身,需要加struct关键字,无论带不带typedef,例如: struct A { int a; struct A *pA; }; 在定义struct方面尽量不要使用typed ...
- Nexus 离线更新中央仓库索引
nexus可以在线更新中央仓库索引,但是更新速度慢,而且很有可能下载的索引不全.下面介绍一种离线更新中央仓库索引的方式,速度快并且可靠. 1.访问http://repo.maven.apache.or ...
- 从《国产凌凌漆》看到《头号玩家》,你就能全面了解5G
2019 年 9 月,移动.联通.电信5G套餐预约总和已突破 1000 万.2019 年 11 月,三大电信运营商将在全国范围内提供携号转网服务.2019 年内,移动将建立 5 万个 5G 基站,联通 ...
- 第一个appium测试用例
from time import sleep from appium import webdriver import pytest class TestXueqiu: user_profile_id ...
- JAVA程序打包方法-挺好
https://blog.csdn.net/dj0721/article/details/72462688/