mysql8优化实战

最近上线了一个10万户的管理系统,以前的客户没有这么多用户量,隐藏在代码中的慢sql渐渐显现出来了。
下面是我最近一周慢sql优化的总结:

	多表sql优化、count sql优化、超过10 0000条limit优化

一、多表sql优化

二、count sql优化

在这里插入图片描述
该表有2135067条记录,使用pageHelper默认生成的count sql,导致相关菜单页面完全没法使用
在这里插入图片描述
在这里插入图片描述
由于count(*)太慢,考虑到使用count(任意索引列)的方式写sql,字段的数据长度越长,建立的索引长度越长、查询性能越差。就找了长度只有1的status字段,这样能达到最好的索引性能。
使用如下sql建立索引:

alter table water add index idx_status (status)

从阿里规约得知,count(列名)不会统计此列为NULL值的行,status字段必须设置成非空,否则存在NULL值会导致统计数据错误;虽然该优化不符合规约,但实实在在的提升性能,故值得一试!
在这里插入图片描述
三、超过10 0000条limit优化
在这里插入图片描述

MySQL 并不是跳过 offset 行,而是取 offset+N 行,然后返回放弃前 offset 行,返回 N 行,那当 offset 特别大的时候,效率就非常的低下,要么控制返回的总页数,要么对超过特定阈值的页数进行 SQL 改写。

在这里插入图片描述
数值状态码查询条件,使用int代替varchar查询效率更高 status:char(1)
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/413633.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工作315:uni-修改添加时间的逻辑

第一步 <u-form-item label"开始日期" prop"startTime" label-width"150"><u-input type"select" :select-open"start_time_show" v-model"form.startTime" placeholder"请选择" click"…

javaScript高程笔记--最佳实践

1.可维护性 《1》什么是可维护的代码 (1)可理解性 (2)直观性 (3)可适应性 (4)可扩展性 (5)可调试性 《2》代码约定 (1)可读性---适当的进行注释【函数和方法、大段代码、复杂的算法、Hack浏览器差异性】 (2)变量和函数名--语义化 (3)变量类型透明---一眼看出来是什么类型的数据…

工作316:uni-修改其他页面的时间逻辑

<u-form-item label"内容" prop"container" label-width"140"><input placeholder"请输入内容" v-model"form.content" type"texarea" /></u-form-item>定义富文本输入跳转有数值 form: {cont…

工作317:uni-修改其他页面整体样式

<template><view class"wrap"><u-form :model"form" :rules"rules" ref"uForm" :errorType"errorType"><u-form-item label"标题" class"label-left" style"margin-left:30r…

犯犯错

1.忘记初始化&#xff0c;程序卡卡卡 2.忘记加多组输入输出 3.Tarjan处理的时候总是把根节点忘掉 4.主函数用数组从0开始&#xff0c;函数中从1开始用&#xff0c;导致凉凉 5.hdu返回TLE的时候记得考虑越界问题 6.memset可能被卡&#xff0c;T的时候想一想&#xff01; 转载于:…

工作318:uni-切换tabber修改状态修饰

onLoad() {/* 调用市场信息的接口 分别 vuex获取 其他三项 */this.$u.api.getTreasureList({marketId: this.vuex_user.market_id,pageNo: 1,pageSize: 20,type:this.current1,releaseBureau:this.releaseBureau,name:this.name}).then(res > {if (res.data.code 200) {thi…

python--循环列表中字典元素

1. 目的&#xff1a; > 实现列表中字典kay - value的遍历 代码&#xff1a; 循环列表中字典元素info_list [{name:zhao,age:22,hight:171},{name:qian,age:23,hight:165},{name:sun,age:24,hight:148},{name:li,age:25,hight:166} ]# 第一种方式 index 0 while index <…

工作320:uni-预加载问题

<u-loadmore :status"status" />onReachBottom() {console.log(触底~~~~)if (this.pageNo > this.pages){this.status nomore;return;} this.status loading;this.pageNo this.pageNo;setTimeout(() > {this.getData()if (this.pageNo > this.page…

js的基本包装类型

基本包装类型(包装对象)&#xff1a; 先看下以下代码&#xff1a; var s1 "helloworld"; var s2 s1.substr(4); 上面我们说到字符串是基本数据类型&#xff0c;不应该有方法&#xff0c;那为什么这里s1可以调用substr()呢&#xff1f; 通过翻阅js权威指南第3.6章节…

字节跳动小程序支付接入

字节跳动小程序支付接入躺过的坑流程签名支付宝配置问题java福利躺过的坑 流程 小程序申请流程业务调用流程 签名 请求字节跳动接口的签名请求预下单返回验签 支付宝配置问题 流程 小程序申请流程 字节跳动小程序开通申请有个渠道秘钥类型选择RSA2和RSA&#xff0c;不管你选择…

工作322:uni-扩展运算符实现拼接合并操作

}).then(res>{if (res.data.code 200) {/* 进行合并操作 */this.tableData [...this.tableData, ...res.data.data.records]this.pages res.data.data.pagesconsole.log(1)console.log(res)}})

深入浅出JVM-内存模型

JVM内存模型总图程序计数寄存器Java虚拟机栈(JVM Stack)定义特点本地方法栈(Native Method Stack)Java堆(Java Heap)定义特点方法区定义特性可能抛出的异常直接内存(Direct Memory)Metaspace (元空间)元空间特色GC元空间内存分配模型从GC角度看Java堆JVM关闭总图 程序计数寄存器…

HDU 4487 Maximum Random Walk

Maximum Random Walk Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 756 Accepted Submission(s): 419 三维dp&#xff0c;一维的话根本没有办法开展&#xff0c;二维的话没办法保存当前位置或者最远位置&…

工作323:uni-获取时间参数

let date new Date();let dateYear date.getFullYear(); //获取年 let dateMonth date.getMonth(); //获取月 let dateDate date.getDate(); //获取当日let dateDay date.getDay(); //获取当日星期数let da…

深入浅出JVM-GC过程

深入浅出JVM-GC过程Minor GC对象进入老年代的4种情况Full GC空间分配担保Minor GC Minor GC过程 假设现在Heap内存大小为20M&#xff0c;其中年轻代为10M&#xff0c;老年代为10M&#xff0c;年轻代中Eden区6M&#xff0c;From区2M&#xff0c;To区2M&#xff0c;新创建的对象…

工作324:uni-时间过滤器封装

filters: {toChangeDate(e) {console.log(new Date(e).getFullYear())console.log(new Date(e).getMonth())console.log(new Date(e).getDay())let dateYear new Date(e).getFullYear(); //获取年 let dateMonth new Date(e).getMonth()1<10? 0 new Date(e).getMonth() …

[Python] 制作启动uiautomator2 的web版 uiautomatorviewer2 批处理启动

打开一个txt文件&#xff0c;复制如下命令进行并另存为为 .bat文件 1 echo on 2 echo 正在启动 uiautomatorviewer2 3 4 python -m weditor 5 6 echo off 注意&#xff1a;如果批处理里面有中文的话&#xff0c;一定要将 txt 文本的编码方式设置为 ANSI 编码进行保存&#xf…

工作325:uni-日期小于10补0

// 创建补0函数 function pZone (s) {return s < 10 ? 0 s : s }pZone(num)

深入理解java虚拟机--线程安全与锁优化

深入理解java虚拟机--线程安全与锁优化面向过程编程思想和面向对象编程思想java语言中的线程安全线程安全的实现方法锁优化面向过程编程思想和面向对象编程思想 面向过程编程思想&#xff1a;站在计算机的角度&#xff0c;以算法为核心&#xff0c;数据是客体&#xff0c;程序…

配置mysql环境变量

配置mysql环境变量&#xff08;非必要&#xff09; 说明&#xff1a;给mysql配置环境变量后我们就可以在cmd里运行mysql&#xff08;开启、停止等操作&#xff09; 1. 和其实环境变量的配置方法一样&#xff0c;我们打开环境变量配置窗口&#xff08;组合键winPause -> 更改…