怎么用flashfxp上传wordpress/seo推广软件排名
个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~
个人主页:.29.的博客
学习社区:进去逛一逛~
SQL优化
- ⑩③【MySQL】了解并掌握SQL优化
- 1. 插入数据 优化
- 2. 主键优化
- 3. order by 排序优化
- 4. group by 分组优化
- 5. limit 分页优化
- 6. count 优化
- 7. update 更新优化
⑩③【MySQL】了解并掌握SQL优化
1. 插入数据 优化
insert优化
:
- ⚪使用批量插入
-
-
- ⚪手动提交事务(每次SQL语句执行后事务自动提交,手动提交避免了多次提交,提升效率)
-
-
- ⚪使用主键顺序插入(顺序比乱序速度更快,性能更高)
-
-
大批量插入数据
:
如果一次性需要插入大批量数据,使用insert语句插入性能较低,此时可以使用MySQL数据库提供的load指令进行插入。操作如下:
# (命令行)客户端连接数据库时,加上参数: --local-infile
mysql --local-infile -u root -p
-- 查看从本地加载文件导入数据的开关是否开启
select @@local_infile;-- 设置全局参数local_infile为1,表示开启从本地加载文件导入数据的开关。
set global local_infile=1;-- 执行load指令将准备好的数据,加载到表结构中
-- 加载文件: /root/sql.log 中的数据插入表
-- 字段间使用 逗号',' 分隔
-- 行间使用 换行'\n' 分隔
load data local infile '/root/sql.log' into table `表名` fields terminated by ',' lines terminated by '\n';
2. 主键优化
数据组织方式
:
- 在InnoDB存储引擎中,表数据都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表(index organized table 简称
IOT
)。
页分裂
:
-
页可以为空,也可以填充一半,也可以填充100%。每个页包含了至少2行数据(如果一行数据多大,会行溢出),根据主键排列。
-
分裂后插入↓
重新设置指针↓
页合并
:
-
当删除一行记录时,实际上记录并没有被物理删除,只是记录被标记(flaged)为删除并且它的空间变得允许被其他记录声明使用。
-
当页中删除的记录达到MERGE_THRESHOLD(默认为页的50%),InnoDB会开始寻找最靠近的页(前或后)看看是否可以将两个页合并以优化空间使用。
-
合并↓
主键设计原则
:
- 主键设计原则:
-
- ①在满足业务需求的情况下,尽量降低主键的长度。
- ②插入数据时,尽量选择顺序插入,选择使用
AUTO_INCREMENT
自增主键。 - ③尽量不要使用UUID做为主键或者作为其他自然主键,如身份证号。
- ④在业务操作时,尽量避免对主键的修改。
3. order by 排序优化
order by 优化
:
①. Using filesort
: 通过表的索引或全表扫描,读取满足条件的数据行,然后在排序缓冲区sort buffer中完成排序操作,所有不是通过索引直接返回排序结果的排序都叫FileSort排序。
②. Using index
: 通过有序索引顺序扫描直接返回有序数据,这种情况即为using index,.不需要额外排序,操作效率高。
排序效率:Using index > Using filesort
-
order by优化策略:
-
-
①根据排序字段建立合适的索引,多字段排序时,也遵循最左前缀法则。
-
-
-- 没有建立索引时,排序性能为:`Using filesort` explain select id,age,phone from tb_user order by age,phone;-- 为排序字段建立合适索引 create index idx_age_phone_aa on tb_user(age,phone); -- 等价于: create index idx_age_phone_aa on tb_user(age asc,phone asc); -- 建立索引后,排序性能提升为:`Using index`
-
-
②尽量使用覆盖索引,非覆盖索引需要回表查询,会从Using index 变为 Using filesort。
-
③多字段排序,一个升序一个降序,此时需要注意联合索引在创建时的规则(ASC\DESC)。
-
-
-- 一个升序一个降序 select id,age,phone from tb_user order by age asc,phone desc;-- 注意联合索引在创建时的规则 create index idx_age_phone_ad on tb_user(age asc,phone desc);
-
-
④如果不可避免地出现filesort,大数据量排序时,可以适当增大排序缓冲区
sort_buffer_size
的大小(默认256k)。 -
-
-- 查看参数sort_buffer_size大小 show variables like 'sort_buffer_size';-- 设置参数sort_buffer_size大小 set sort_buffer_size=自定义的大小;
-
-
4. group by 分组优化
-
根据分组字段建立合适的索引来提高效率。
-
分组操作时,多字段通过联合索引排序也是遵循最左前缀法则的。
-
-
-- 如何建立合适索引:建议使用联合索引,可参考上文的order by优化
-
5. limit 分页优化
一个常见又非常头疼的问题就是大数据量的分页,如:limit2000000,10
,此时需要MySQL排序前2000010记录,仅仅返回2000000到2000010的记录,其他记录丢弃,查询排序的代价非常大。
-
优化策略
: -
-
一般分页查询时,通过建立
覆盖索引
能够较好提升性能,可通过覆盖索引+子查询
形式进行优化。 -
-- 优化前: select * from tb_sku limit 2000000,10;-- 优化后 -- 子查询的id字段存在主键索引,order by性能得到优化 -- 根据子查询的到的主键字段id进行查询,效率高。 select s.* from tb_sku s,(select id from tb_sku order by id limit 2000000,10) i where s.id = i.id;
-
6. count 优化
count()
:
- count()是一个聚合函数,对于返回的结果集,一行行地判断,如果count()函数的参数不是NULL,累计值就加1,否则不加,最后返回累计值。(只记录不为NULL的记录)
- **用法:**count(*)、count(主键)、count(字段)、count(1)
-
- ①
count(*)
-
- InnoDB引擎并不会把全部字段取出来,而是专门做了优化,不取值,服务层直接按行进行累加。
- ②
count(主键)
-
- InnoDB引擎会遍历整张表,把每一行的主键id值都取出来,返回给服务层。服务层拿到主键后,直接按行进行累加(主键不可能为NULL)。
- ③
count(字段)
-
- **没有not null约束:**InnoDB引擎会遍历整张表把每一行的字段值都取出来,返回给服务层,服务层判断是否为null,不为null,计数累加。
- **有not null约束:**InnoDB引擎会遍历整张表把每一行的字段值都取出来,返回给服务层,直接按行进行累加。
- ④
count(1)
-
- lnnoDB引擎遍历整张表,但不取值。服务层对于返回的每一行,放一个数字“1”进去,直接按行进行累加。
- ①
7. update 更新优化
需要优化的问题
:
- InnoDB的行锁是针对索引加的锁,不是针对记录加的锁,更新没有索引的记录或索引失效,使用的锁会从行锁变为表锁。
- 使用表锁会使并发性能下降,所以应当经可能去更新 使用了索引的字段。
相关文章:

⑩③【MySQL】详解SQL优化
个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ SQL优化 ⑩③【MySQL】了解并掌握SQL优化1. 插…...

SQL 的 AND、OR 和 NOT 运算符:条件筛选的高级用法
AND 运算符 SQL的AND运算符用于根据多个条件筛选记录,确保所有条件都为TRUE才返回记录。下面是AND运算符的基本语法: SELECT column1, column2, ... FROM table_name WHERE condition1 AND condition2 AND condition3 ...;column1, column2,等是您要选…...

11.5MyBatis(进阶)
一.${}和#{} 1.$是直接替换,#是预处理(使用占位符,替换成?).前者不安全(SQL注入), 后者安全. 2.$的使用场景: 如果传递的值是sql的关键字,只能使用$,不能使用#(asc,desc). 二.SQL注入 注意: 如果使用${}进行传参,一定要是可以穷举的,并且要进行安全性验证(例如排序,只能传a…...

CentOS挂载:解锁文件系统的力量
目录 引言1 挂载简介2 挂载本地分区3 挂载网络共享文件系统4 使用CIFS挂载结论 引言 在CentOS(一种基于Linux的操作系统)上挂载文件系统是一项常见而重要的任务,无论是将新的磁盘驱动器添加到系统,还是挂载网络共享资源ÿ…...

修身养性 - 阿纳托利: 健身指导
欢迎来到我的力量建设培训计划。这是一个介绍性视频,我会对训练项目、技巧和计划进行解释。我每天都在练习英语,但还不够好,所以下面使用了自动翻译。带来不便请原谅。 Welcome to my power building training program. Its an introduction video where I explained about …...

pip anaconda 设置 国内镜像源
一、pip设置国内(清华)镜像源和升级pip 使用下面的命令直接使用清华镜像源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simplepython -m pip install --upgrade pip #备选 清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云&am…...

三江城115m²3室2厅2卫,现代简约不单是居所更是对生活的向往。福州中宅装饰,福州装修
【前言】 简洁有力,静默无声。 以简约精致的方式,展现现代都市生活; 经典不因潮流褪色,不为悦人只为悦己。 项目信息 项目名称 | 三江城 设计地址 | 福建福州 项目面积 | 115㎡ 项目户型 | 3室2厅 设计风格 | 现代简约 全…...

Hangfire.Pro 3.0 Crack
Hangfire.Pro 有限的存储支持 Hangfire Pro 是一组扩展包,允许使用批处理创建复杂的后台作业工作流程,并提供对超快速Redis作为作业存储的支持 请注意,仅在使用Hangfire.SqlServer、Hangfire.Pro.Redis或Hangfire.InMemory包作为作业存储时才…...

axios的使用,cancelToken取消请求
get请求 // 为给定 ID 的 user 创建请求 axios.get("/user?ID12345").then(function (response) {console.log(response);}).catch(function (error) {console.log(error);}); // 上面的请求也可以这样做 axios.get("/user", {params: {ID: 12345,},}).t…...

Rockdb简介
背景 最近在使用flink的过程中,由于要存储的状态很大,所以使用到了rockdb作为flink的后端存储,本文就来简单看下rockdb的架构设计 Rockdb设计 Rockdb采用了LSM的结构,它和hbase很像,不过严格的说,基于LS…...

【MyBatis】写了 10 年的代码,我最怕写 MyBatis 这些配置,现在有详解了
在使用 mybatis 过程中,当手写 JavaBean和XML 写的越来越多的时候,就越来越容意出错。这种重复性的工作,我们当然不希望做那么多。 还好, mybatis 为我们提供了强大的代码生成--MybatisGenerator。 通过简单的配置,我们…...

全球地表水数据集JRC Global Surface Water Mapping Layers v1.4
简介: JRC Global Surface Water Mapping Layers产品,是利用1984至2020年获取的landsat5、landsat7和landsat8的卫星影像,生成分辨率为30米的一套全球地表水覆盖的地图集。用户可以在全球尺度上按地区回溯某个时间上地表水分的变化情况。产品…...

Spring过滤器和拦截器的区别
📑前言 本文主要Spring过滤器和拦截器的区别的问题,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风讲故事 🌄每日一句&#x…...

HIS医疗项目
文章目录 医疗项目简介HIS项目介绍HIS架构解析HIS业务流程图HIS项目架构图 HIS组件解析——服务支撑 内存设置为4G或以上部署NGINX服务部署web安装JDK部署Elasticsearch安装ik中文分词器 部署rabbitmq部署MySQL服务安装MySQL服务建库、授权用户导入数据 部署Redis测试Redis 部署…...

eclipse启动无法找到类(自定义监听器)
一.报错 二.排查 1.首先检查代码是否有问题 本人报错是找不到监听器,故检查监听器的代码和web.xml文件是否有问题 public class DoorListener implements ServletContextListener 监听器是否继承并实现ServletContextListener中的方法。 web.xml中: &…...

Ubuntu openssh-server 离线安装
经常用到ubunutu 20.04容器,但是没有ssh比较难调试代码,离线环境下安装方法: 安装以下三个软件包,点击openssh下载链接可下载: 1、openssh-client_8.2p1-4_amd64.deb 2、openssh-sftp-server_8.2p1-4_amd64.deb 3、…...

servlet页面以及控制台输出中文乱码
如图: servlet首页面: servlet映射页面: 以及控制台输出打印信息: 以上页面均出现中文乱码 下面依次解决: 1、首页面中文乱码 检查你的html或者jsp页面中meta字符集 如图设置成utf-8 然后重启一下tomcat 2、servl…...

《向量数据库指南》——TruLens + Milvus Cloud构建RAG深入了解性能
深入了解性能 索引类型 本例中,索引类型对查询速度、token 用量或评估没有明显影响。这可能是因为数据量较小的关系。索引类型对较大语料库可能更重要。 Embedding 模型 text-embedding-ada-002 在准确性(0.72,平均 0.60)和答案相关度(0.82,平均0.62)上优于 MiniLM Embeddin…...

vscode代码上传到gitlab
打开终端 1.1输入一下内容提交到本地仓库 PS D:\VueProject2\mall-admin-web> git add . PS D:\VueProject2\mall-admin-web> git commit -m “商品优化,屏蔽不要内容” 1.2提交到远程仓库 master应该被替换为 Gitee 仓库中默认的分支名称 PS D:\VueProje…...

Spring Boot 项目的常用注解与依赖
工具类 lombok 依赖 可以快速的为类提供 get,set,toString 等方法 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional> </dependency> My…...

【C++11】多线程库 {thread线程库,mutex互斥锁库,condition_variable条件变量库,atomic原子操作库}
在C11之前,涉及到多线程问题,都是和平台相关的,比如windows和linux下各有自己的接口,这使得代码的可移植性比较差。 //在C98标准下,实现可移植的多线程程序 —— 条件编译 #ifdef _WIN32CreateThread(); //在windows系…...

智能导诊系统:基于机器学习和自然语言处理技术,可快速推荐合适的科室和医生
智能导诊系统是一种基于人工智能技术的新型系统,它能够为医院提供患者服务和管理,提高医院的管理效率和服务水平。 技术架构:springbootredismybatis plusmysqlRocketMQ 以下是智能导诊系统的应用场景和功能特点: 应用场景 1.患…...

如何防止图片抖动
如何防止图片抖动 什么是图片抖动,就是我们加载图片完成之后,图片显示,但是其下方内容会跟着下移,这就造成了图片抖动用户体验不好,我们想即使图片没加载出来,页面上也有一个空白的位置留给图片。 我们要知…...

依赖注入方式
依赖注入方式 思考:向一个类中传递数据的方式有几种? 普通方法(set方法)构造方法 思考:依赖注入描述了在容器中建立bean与bean之间关系依赖的过程,如果bean运行需要的是数字或字符串呢? 引用类…...

HTML 超链接 a 标签
在 HTML 标签中,a 标签用于定义超链接,作用是从一个页面链接到另一个页面。 在 a 标签中有两个常用的属性: - href 属性,用于指定链接目标的 url 地址(必须属性)。当为标签应用 href 属性时,…...

【cpolar】Ubuntu本地快速搭建web小游戏网站,公网用户远程访问
🎥 个人主页:深鱼~🔥收录专栏:cpolar🌄欢迎 👍点赞✍评论⭐收藏 目录 前言 1. 本地环境服务搭建 2. 局域网测试访问 3. 内网穿透 3.1 ubuntu本地安装cpolar 3.2 创建隧道 3.3 测试公网访问 4. 配置…...

数字化企业需要什么样的数据中心
随着科技的迅猛发展和数字化浪潮的涌现,企业越来越依赖于强大而高效的数据中心来支持其业务运营和创新发展。数字化企业需要一个先进的、灵活可扩展的数据中心来满足不断增长的数据需求、提高业务灵活性和确保安全性。 以下是数字化企业需要考虑的关键因素…...

el-table固定表头(设置height)出现内容过多时不能滚动问题
主要原因是el-table没有div包裹 解决:加一个div并设置其高度和overflow 我自己的主要代码 <div class"contentTable"><el-tableref"table":data"tableData"striperow-dblclick"onRowDblclick"height"100%&q…...

从流程优化到经营提效,法大大电子签全面助力智慧零售升级
在新零售模式下,“商业综合体、百货商场、连锁商超、连锁便利店、线上电商平台”等各类商业零售企业借助数字化的手段来改造和重塑传统零售流程和逻辑,实现全面数字化转型,包括线上线下一体化、全场景覆盖、全链条联通、全渠道经营、客户服务…...

Jquery 通过class名称属性,匹配元素
UI自动化过程中,常常需要判断某个元素是否满足条件,再走不通的脚本逻辑;、本文介绍如何通过jquery判断菜单是否展开,来决定是否执行菜单展开脚本;Jquery通过class名称属性,匹配元素 我们先分析,…...