SQL优化

24 篇文章 0 订阅
订阅专栏

insert优化

# 一次性插入多条数据,可以用一条sql解决
insert into test values(10,12),(20,13),(19,25);# 500-1000条比较合适
# 如果有几万条,可以分批批量插入

# 手动提交事务
# 默认是自动提交,多条insert涉及频繁的事务开启和提交
执行insert之前,先开启事务
多条insert语句执行完之后,统一提交事务

# 主键顺序插入

# 大批量数据插入(几百万条),此时insert性能较低,使用load指令
# 导入csv文件
# local表明从客户主机上按路径读取文件,csv采用的逗号分隔符
load data local infile 'C:\\Users\\hhx\\Downloads\\log.txt' into table test character set 'gbk' fields terminated by ',';
load data local infile 'src1/step1/product.csv' into table product character set 'gbk' fields terminated by ',';

主键优化

InnoDB存储引擎中,表数据是根据主键顺序组织存放的,叶子节点是有序的
这种存储方式的表称为索引组织表(Index Organized Table).

主键乱序插入,可能会出现页分裂

# 主键设计原则
1.满足业务需求的情况下,尽量降低主键的长度
2.插入数据时,尽量选择顺序插入
3.尽量不要使用UUID做主键或者其他自然主键(UUID是无序的,乱序插入可能会出现页分裂,且UUID太长)
4.业务操作时,避免对主键的修改

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

orderby优化

# mysql当中的排序有两种方式:
1.Using filesort:通过表的索引或全表扫描,读取满足条件的数据行,然后在排序缓冲区sort buffer中完成排序操作
所有不是通过索引直接返回排序结果的排序都叫filesort排序
2.Using index:通过有序索引顺序扫描直接返回有序数据,这种情况不需要额外排序,操作效率高

create index index_name on tb_user(age asc,phone desc);

# 根据排序字段,建立合适的索引,多字段排序时,遵循最左前缀法则
# 尽量使用覆盖索引
# 多字段排序,一个升序一个降序,此时需要注意联合索引创建时的规则(asc\desc)
# 如果不可避免的出现filesort,大数据量排序时,可以适当增大排序缓冲区的大小sort_buffer_size(默认256k)

groupby优化

# 建立索引
wheregroup by之前执行
havinggroup by之后执行
所以筛选的话,优先考虑where

limit优化

一条一条读取到10100,然后再根据offset的设置,舍弃前10000条记录,返回后面的100条记录
MySQL的实现分为引擎层和数据层,limit offset只能作用于引擎层返回的结果集
因此对引擎层来说,他也不知道前10000个是会扔掉的数据,只能先一股脑地往上传
# 会很慢
select * from tb_user limit 9000000,10;

# 一般思路:覆盖索引+子查询
explain
select t.* from test t,(select id from test order by id limit 9000000,10) p where t.id = p.id;
select a.* from test a inner join (select id from test limit 9000000,100) b on a.id=b.id;

explain
select * from test limit 9000000,10;
# 定位到第9000000条数据,利用主键自增的规律
explain
select * from test where id > 9000000 limit 10

count优化

select count(*) from test;
# MyISAM把一个表的总行数存在了磁盘上,因此执行count(*)的时候会直接返回,效率很高
# InnoDB执行count(*)的时候,需要一行一行的从引擎里读出来,累积计数
count()是一个聚合函数,对于返回的结果集,一行一行地判断,如果count的参数不是null,累计值就加一

count(主键):遍历整张表,把每一行的主键都取出来,返回给服务层,服务层拿到之后,直接进行累加(不用判断是否为null)
count(字段):
没有not null约束:遍历整张表,把每一行的字段值都取出来,在服务层判断是否为nullnot null约束:遍历整张表,把每一行的字段值都取出来,直接进行累加

count(1):遍历整张表,但不取值,服务层对于返回的每一行,都会放一个数字1进去,按行进行累加
count(*):InnoDB并不会取出全部字段,专门做了优化,服务层直接按行进行累加

count(*)>count(1)>count(主键)>count(字段)

update优化

更新数据时根据索引字段进行更新,是行锁(对当前行锁定)
不根据索引字段进行更新,是表锁(只有当前事务提交了,别的事务才能对这个表进行更新)

InnoDB的行锁是针对索引加的锁
更新时要使用索引,且索引不能失效,否则会从行锁升级为表锁

limit慢查询的原理和优化
limit offset慢查询背后的原因和解法
用会LIMIT
limit,offset
实践中如何优化MySQL

SQL优化 SQL优化软件 SQL优化工具
12-14
SQL优化数据库管理中的关键环节,它涉及到提升查询性能、减少资源消耗以及改善系统整体效率。SQL优化软件和工具能够帮助数据库管理员(DBA)和开发人员找出性能瓶颈,优化查询逻辑,从而提高数据库系统的响应速度...
收获,不止SQL优化--抓住SQL的本质1
08-03
- **全书总结**:本书不仅是一本关于SQL优化的技术书籍,更是引导读者进入SQL优化世界的指南。通过丰富的案例、实战经验和深入的技术探讨,帮助读者建立起从宏观到微观的优化思路,并最终达到“爽”的境界。 - **...
sql优化的几种方式
热门推荐
freedom
11-05 42万+
一、为什么要对SQL进行优化 我们开发项目上线初期,由于业务数据量相对较少,一些SQL的执行效率对程序运行效率的影响不太明显,而开发和运维人员也无法判断SQL对程序的运行效率有多大,故很少针对SQL进行专门的优化,而随着时间的积累,业务数据量的增多,SQL的执行效率对程序的运行效率的影响逐渐增大,此时对SQL的优化就很有必要。 二、SQL优化的一些方法 1.对查询进行优化,应尽量避免全表扫描...
MySQLSQL优化技术深度学习指南
聚焦于深度解析最新的编程语言特性、框架升级、架构设计、开发工具和最佳实践,涵盖Web前端(如Vue3, React, Angular等)、后端开发(如Node.js, Java, Python等)、移动端开发(iOS, Android原生及跨平台开发)
04-28 4万+
MySQLSQL优化是一项系统工程,涉及查询设计、索引策略、JOIN操作、数据库配置等多个层面。通过深入理解查询执行原理,运用恰当的优化技术和工具,结合持续的性能监控与调优实践,能够有效提升MySQL数据库的查询性能,保障业务系统的高效稳定运行。
sql 优化,提高查询速度
我哎GIS博客
08-14 1万+
在系统开发中,SQL查询的优化是提高应用性能和响应速度的关键。SQL查询的优化都是相对的,要根据具体业务和库表数据量的大小选择合适的优化方案。
sql优化
weixin_69413663的博客
10-11 1112
sql
Oracle数据库SQL优化详解
靖节先生的博客
01-07 1万+
Oracle数据库SQL优化1. Oracle SQL优化概述2. Oracle SQL优化详解2.1 Oracle 查询阻塞2.2 Oracle 查询耗时 SQL2.3.Oracle 查看执行计划2.4.Oracle 查看收集统计信息2.5.Oracle 查询优化器 -- 改写查询语句2.6.Oracle 查询优化器 -- 访问路径2.7.Oracle 查询优化器 -- 表连接方法2.8.Oracle 索引2.9.Oracle 视图2.10.Oracle 减少数据库访问次数2.11 Oracle 面向对象
SQL优化详解
Therefore的专栏
01-12 4827
一、问题的提出  在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要的问题之一。系统优化中一个很重要的方面就是SQL语句的优化。对于海量数据,劣质SQL语句和优质SQL语句之间的速度差别可以达到上百倍,可见对于一个系统不是简...
Mysql sql优化
weixin_42189467的博客
10-26 3927
Mysql sql优化
SQL优化
浪迹白杨的博客
06-25 2030
SQL
SQL优化方案
我命由我不由天
05-08 4万+
转载至:http://blog.itpub.net/31555484/viewspace-2565387/ 作者1:惨绿少年 https://www.cnblogs.com/clsn/p/8214048.html 作者2:喜欢拿铁的人 https://zhuanlan.zhihu.com/p/49888088 在进行MySQL的优化之前,必须要了解的就是MySQL的查询过程,很多查询优化...
Sql优化总结!详细!(2021最新面试必问)
布诺的博客
04-09 13万+
Sql优化基础Sql优化查询SQL尽量不要使用select *,而是具体字段避免在where子句中使用or来连接条件使用varchar代替char尽量使用数值替代字符串类型查询尽量避免返回大量数据使用explain分析你SQL执行计划是否使用了索引及其扫描类型创建name字段的索引优化like语句:字符串怪现象索引不宜太多,一般5个以内索引不适合建在有大量重复数据的字段上where限定查询的数据避免在索引列上使用内置函数避免在where中对字段进行表达式操作避免在where子句中使用!=或<>操
基于案例学习SQL优化
10-06
在“基于案例学习SQL优化”的课程中,我们主要探讨如何提升数据库性能,特别是针对SQL查询的优化技巧。DBA(数据库管理员)作为关键角色,需要掌握这些技能来确保系统的高效运行。以下是根据课程标题和描述提炼出的...
mysql学习教程,从入门到精通,SQL 约束(Constraints)(41)
最新发布
qq_45746668的博客
10-12 1001
数据库设计中,约束(Constraints)用于确保数据的准确性和完整性。它们通过限制可以插入到数据库表中的数据类型来防止无效数据。SQL 中有几种常见的约束类型,包括主键约束(Primary Key)、外键约束(Foreign Key)、唯一约束(Unique)、非空约束(NOT NULL)和检查约束(CHECK)。
PostgreSQL:json数据处理
m0_72560900的博客
10-11 701
在 PostgreSQL 中,处理 JSON 数据的功能非常强大,尤其是针对嵌套的 JSON 结构和 JSON 数组的查询。以下是一些处理 JSON 数据的常见操作和具体的案例,主要展示如何从 JSON 和 JSON 数组中获取指定 key 的值。
SQL分类中的DCL
weixin_64689713的博客
10-12 367
DCL(Data Control Language):数据控制语言,用来创建数据库用户、控制数据库的访问权限DCL主要包含两方面的操作,
SQL】深入探索SQL调优:提升数据库性能的全面指南
人生苦短,睡觉要紧,睡醒再说
10-09 1745
在本文中,我们深入探讨了SQL调优的重要性及其在提升数据库性能中的关键角色。从理解执行计划到选择合适的索引,每一个细节都能显著影响应用程序的响应速度和处理能力。我们强调了基本的优化原则,如避免使用SELECT *、合理使用JOIN,以及定期更新统计信息。同时,数据库配置和硬件优化也不可忽视,它们直接关系到系统的整体性能。通过采用这些策略和技术,开发者和数据库管理员能够有效提高数据库的效率,确保系统在高负载下依然稳定运行。
在线家教管理系统(含源码+sql+视频导入教程)
coderbu的博客
10-11 858
基于spring的在线家教管理系统2拥有三种角色 管理员:会员管理、教师管理、家教列表、发布家教需求、教师接单列表、辅导机构列表、试题列表等 教师:登录注册、个人信息修改、查看预约记录 学生:发布需求、我的订单、预约教员记录、个人信息修改、登录注册等
Oracle SQL优化深度解析
"ORACLE SQL性能优化课程主要涵盖了SQL语句执行的过程、ORACLE优化器的工作原理、表之间的关联处理、获取与分析SQL执行计划的方法,旨在帮助学习者逐步掌握SQL优化技术。课程内容包括优化基础知识、性能调整概述、...
写文章

热门文章

  • No converter for [class xxx] with preset Content-Type ‘multipart/form-data’ 12301
  • opengauss(postgresql)创建用户等基本命令 8028
  • 函数的return,返回值 6897
  • 线性表——删除重复元素 4492
  • SpringSecurity配置多种登录方式 4143

分类专栏

  • Makefile 5篇
  • 二刷Java(查漏补缺) 8篇
  • Git 11篇
  • go 4篇
  • Shell 5篇
  • 大数据 4篇
  • 计网&操作系统 7篇
  • docker 3篇
  • 消息队列
  • JUC并发 19篇
  • 设计模式 1篇
  • Redis 5篇
  • SpringMVC和MyBatis 20篇
  • SpringBoot 31篇
  • TypeScript 1篇
  • SpringSecurity 5篇
  • SpringCloud 4篇
  • Maven 16篇
  • Spring 12篇
  • Mysql 24篇
  • Linux 23篇
  • Web网页前端 38篇
  • 安卓和测试 6篇
  • JVM 7篇
  • C 17篇
  • 重学Java 18篇

最新评论

  • CMake(1)

    CSDN-Ada助手: 如何在 Linux 上安装 MySQL 数据库?

  • java_io

    CSDN-Ada助手: 哇, 你的文章质量真不错,值得学习!不过这么高质量的文章, 还值得进一步提升, 以下的改进点你可以参考下: (1)提升标题与正文的相关性;(2)增加除了各种控件外,文章正文的字数;(3)使用更多的站内链接。

  • hexo+github搭建博客

    CSDN-Ada助手: 哇, 你的文章质量真不错,值得学习!不过这么高质量的文章, 还值得进一步提升, 以下的改进点你可以参考下: (1)使用更多的站内链接;(2)增加除了各种控件外,文章正文的字数;(3)提升标题与正文的相关性。

  • go_compiler

    CSDN-Ada助手: 推荐 Go 技能树:https://edu.csdn.net/skill/go?utm_source=AI_act_go

最新文章

  • go_compiler
  • go语言特性1
  • 安装GO环境
2024年12篇
2023年80篇
2022年188篇
2021年69篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳坪山网站建设公司网站内链优化公司对网站的页面建议和优化清新区网站seo优化排名保山网站优化策略邯郸企业网站优化推广有哪些郑州官网网站优化哪家便宜台湾网站优化外包优化网站性能南京seo网站优化报价单常熟网站推广优化网站底部优化字河北公司网站优化网站关键词优化的好处企业网站排名优化网站优化关键词选择网站排名优化金手指排名稳定克拉玛依怎么做网站优化北仑网站优化价格沈阳品牌网站建设优化价格北京餐饮行业网站优化延边网站优化浦东区网站优化SEO网站页面优化总结黄石本地网站优化公司排名成华区什么是网站优化兰考网站建设优化哪家好兰溪百度网站优化极速建站网站频道优化财务公司做网站优化集美网站优化企业香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

深圳坪山网站建设公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化