Mysql优化

MySQL 优化 基于规则优化 14 基于规则的优化 ​ MySQL会基于一些规则重写我们写的语句,使得查询的执行更加高效 表的结构 # 表single_table CREATE TABLE single_table ( id int not null auto_increment, key1 VARCHAR(100), key2 int, key3 varchar(100), key_part1 varchar(100), 阅读详情

1.选取最合适的字段属性

1).长度尽可能小,避免给数据库增加不必要的空间
2).尽量把字段设置为NOT NULL,查询时不用比较null值

2.使用索引

3.有索引但未被用到的情况(不建议)

1).尽量避免like的参数以通配符开头,否则数据库引擎会放弃使用索引而进行全表扫描
如 :
select * from table_name a where a.col like "%0"
这里写图片描述

但是可以以通配符结束
这里写图片描述

2). 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描
如:
select id from t where num is null
可以先对表的字段预处理 或者 建表的时候设置默认值为0

update t set num=0 where num = 0;

此例可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:
select id from t where num=0

3).应尽量避免在 where 子句中使用 != 或 <> 操作符,否则将引擎放弃使用索引而进行全表扫描。

这里写图片描述

4).避免在where子句中使用or来连接条件,否则将导致引擎放弃使用索引而进行全表扫
合并.所有查询中的列数和列的顺序必须相同,数据类型必须兼容
从效率上说,union all要比union快很多.
union all:两张表和在一起,字段要相同
union :两张表和在一起,字段要相同,排重

某些复杂语句会用全表扫描,查询写的不够合理,让mysql放弃索引而进行全表扫描

索引列:
低效:

select * from t_credit_detail where Flistid = ‘2000000608201108010831508721’ or Flistid = ‘10000200001’;

高效:

'select * from t_credit_detail where Flistid = ‘2000000608201108010831508721’ union all select * from t_credit_detail where Flistid = ‘10000200001’

非索引列.则都是采取全表扫描,union扫描两次, 最好看执行计划写sql

4.避免select *

在解析的过程中,依次转换成所有的列名,这个工作是通过查询数据字典完成的,这意味着将消耗更多的时间,应该养成一个需要什么就取什么的好习惯

5.order by 语句优化

任何在order by语句的非索引项或者有计算表达式都将降低查询速度
method: 重写order by 语句以使用索引
为所使用的列建立另一索引
绝对避免在order by

6.group by 语句优化

提高group by 语句的效率,可以通过将不需要的记录在group by 之前过滤掉
低效: having 集合后赛选数据

select job,avg(sal) from emp 
group by job
having job = 'president' or job = 'manager'

高效: 集合前赛选数据

select job,avg(sal) from emp
where job = 'president' or job = 'manager'
group by job

7.用exists 代替 in (看情况)

很多时候用exists代替in是一个好的选择
A:10000 B:1000000
in:遍历B表(如果数据B表大于A表则不适合,数据大,查询慢)
查询效率:10000*1000000 (缓存在内存中比较)

select num from t a where a.num in ( select num from t2 b)
以上查询使用了in语句,in()只执行一次,它查出B表中的所有num字段并缓存起来.之后,检查A表的num是否与B表中的num相等,如果相等则将A表的记录加入结果集中,直到遍历完A表的所有记录.

替换
exists:
查询效率:只查询10000次,(不断查询数据库)
select num from t a where a.num exists( select 1 from t2 b where b.num=a.num)
以上查询使用了exists语句,exists()会执行A.length次,它并不缓存exists()结果集,因为exists()结果集的内容并不重要,重要的是结果集中是否有记录,如果有则返回true,没有则返回false.

结论:
in()适合B表比A表数据小的情况
exists()适合B表比A表数据大的情况
in()是在内存里遍历比较,而exists()需要查询数据库,我们都知道查询数据库所消耗的性能更高,而内存比较很快.

8.能用UNION ALL就不要用UNION

UNION ALL不执行SELECT DISTINCT函数,这样就会减少很多不必要的资源。

9、在Join表的时候使用相当类型的例,并将其索引(建表的时候尽量字段类型一致)

如果应用程序有很多JOIN 查询,你应该确认两个表中Join的字段是被建过索引的。这样,MySQL内部会启动为你优化Join的SQL语句的机制。
而且,这些被用来Join的字段,应该是相同的类型的。例如:如果你要把 DECIMAL 字段和一个 INT 字段Join在一起,MySQL就无法使用它们的索引。对于那些STRING类型,还需要有相同的字符集才行。(两个表的字符集有可能不一样)

Win11系统下Abaqus2022与VS2022+oneAPI2023环境配置全攻略(附VUMAT子程序避坑指南) 本文详细指导在Windows 11系统下,为Abaqus 2022配置Visual Studio 2022与Intel oneAPI 2023的Fortran编译环境,以支持VUMAT等用户子程序开发。内容涵盖软件安装顺序、环境变量关联、快捷方式修改及关键验证步骤,并提供了首个VUMAT子程序的实战编写与模型验证方法,帮助用户高效搭建稳定可靠的仿真开发平台。 阅读详情

相关推荐

不用买显示器!用USBMMID虚拟显示器软件在Win10上扩展4个屏幕(保姆级教程)

本文提供了一份详细的保姆级教程,指导用户如何在Windows 10系统上,无需购买额外硬件,通过USBMMID虚拟显示器软件扩展出多达4个虚拟屏幕。文章深入解析了虚拟显示器的核心原理,并基于微软IDD框架,手把手教学从软件获取、环境检查到安装配置的全过程,帮助开发者和多任务用户构建高效、免费的虚拟多屏工作站,实现生产力的飞跃。

backprop5master的博客 660

mysql优化

Mysql优化综合性的问题: A、表的是设计合理化(符合 3范式) B、添加适当的索引(index)[四种:普通索引,主键索引,唯一索引,unique,全文索引] C、分表技术(水平分割,垂直分割) D、读写[写:update/delete/add]分离 E、存储过程[模块化编程,可以提高速度] F、对mysql配置优化[配置最大并发数,my.ini调整缓存大小] G、Mysql服务...

github_zwl的博客 1万+

【Godot】实现对话系统

在 Godot 中实现对话系统(Dialogue System)是游戏开发中的常见需求。Godot本身自带的的灵活性和轻量级脚本语言 GDScript 使得实现对话系统变得相对简单。以下是实现一个基础对话系统的示例。(语言为GDScript但高亮选择Python因为类似)通过 Godot 和 GDScript,我们可以给我们的游戏实现一个对话系统。从简单的文本显示到复杂的分支对话,Godot 提供了足够的灵活性来满足我们的需求。如果需要更高级的功能,可以尝试使用现成的插件如 Dialogic。

Octopus2077的博客 2522

MySQL的优化

在应用的开发过程中,由于初期数据量小,开发人员写SQL语句更加重视功能上的实现,但是当应用系统正式上线后,随着数据量的急剧增长,很多SQL语句开始逐渐显露出性能问题,对生产的影响也越来越大,此时这些有问题的SQL语句就成为整个系统性能的瓶颈,因此我们必须要对它们进行优化.

weixin_71629261的博客 2281

【ESP32 S3 开发】基于I2S协议驱动INMP441数字麦克风 实现语音采集

注意INMP441的 L/R接地之后才稳定输出数据 否则一直都是0WAV格式说明这里主要是想说wav文件重要的就是生成一个wavhead来标识它是一个wave文件,wave文件的data chunk 中的data部分还是PCM编码格式的数据,直接从I2S读进去就可以,不需要压缩。wav文件的头一般由4个chunk组成。 以16bit深度为例,代码如下。其他深度可以根据注释自行计算。 I2S -> DAC i2s_read()函数,向flash中划分的一个buff当中读入byte数组。以16bit深度为例,一

m0_43395703的博客 1万+

手把手教你用Ubuntu 22.04的附加驱动工具安装NVIDIA显卡驱动(含常见错误修复)

本文详细介绍了在Ubuntu 22.04系统上,如何通过图形化的“附加驱动”工具安全、便捷地安装NVIDIA显卡驱动。内容涵盖从准备工作、禁用默认的nouveau驱动、图形界面安装实操,到安装后的验证(如使用nvidia-smi命令),并提供了安装失败黑屏、亮度调节失效等常见问题的深度解决方案,帮助用户彻底搞定驱动安装难题。

weixin_29248653的博客 602

MySQL优化

本文整理一下关于MySQL的优化问题,对于sql的定位、分析、优化的一些步骤做了一些整理。

weixin_43844718的博客 1889

Zotero on Mac: 高效文献管理与引用指南

本文为Mac用户提供了一份全面的Zotero高效文献管理与引用指南。从安装配置、文献收集管理、PDF深度阅读与笔记,到在Word中无缝插入引用和生成参考文献,详细讲解了核心工作流。同时推荐了ZotFile、Better BibTeX等必备插件,并介绍了利用同步与WebDAV实现跨设备无缝衔接的方法,助力研究者构建个人数字知识库,极大提升学术研究效率。

weixin_29281941的博客 1178

MySQL 优化

调优思路 对查询进行缓存 强制限制 MySQL 资源设置 关键字缓冲区 调优思路 1. 硬件优化 2. 数据库设计与规划--以后再修改很麻烦,估计数据量,使用什么存储引擎 3. 数据的应用--怎样取数据,SQL语句的优化 4. 磁盘 IO优化 5. 操作系统的优化--内核、TCP连接数量 6. MySQL服务优化--内存的使用,磁盘的使用 7. my.cnf 内参数的优化 8. 分库分表思路和优劣 硬件优化 CPU—— 64 位、高主频、高缓存,高并行处理能力 内存——大内存、主频高,尽量不要用

1837

硬件工程师的破局之路:为何你才是考取软考高级架构师的“天选之子”?

硬件工程师如何转型系统架构师:独特优势与实战路径 文章揭示了硬件工程师在考取系统架构设计师证书时的独特优势。作者指出,硬件工程师的全局思维、接口设计能力和可靠性经验正是系统架构的核心要素。通过将硬件经验升维为架构思维(从引脚到接口、从单板到系统、从实现到权衡),硬件背景反而成为竞争优势。文章建议通过知识补全、建立架构决策日志和术语转换练习来备考,并强调硬件工程师在软硬协同时代的独特价值——既能统领硬件设计,又能为软件搭建最佳舞台。文末鼓励硬件工程师以更高视野看待职业发展,将系统架构师认证视为水到渠成的职业升

云轩阁 534

【毕设救星】从0到1打造YOLOv8货架商品检测与可视化系统,让你的毕设脱颖而出

本文介绍了一个基于YOLOv8的货架商品检测系统毕设项目。系统采用YOLOv8模型进行商品检测,包含环境搭建、数据集准备、模型训练与验证等完整流程,并开发了可视化UI界面。项目聚焦智能零售应用场景,技术栈完整且易于实现,适合作为计算机视觉方向的毕业设计。文章详细指导了从数据标注、模型训练到界面开发的全过程,提供代码示例和实用建议,帮助学生快速完成毕设并提升答辩表现。

LXY_LOVE36的博客 103

MySQL 优化方案

MySQL 查询过程是指从客户端发送 SQL 语句到 MySQL 服务器,再到服务器返回结果集的整个过程。这个过程涉及多个组件的协作,包括连接管理、查询解析、优化、执行和结果返回等。索引是提高查询性能的核心手段,但需要合理使用。查询缓存(MySQL 8.0 之前)优化查询语句本身可以显著提升性能。使用 LIMIT 时避免高偏移量。合理使用 IN 和 EXISTS。使用 EXPLAIN 分析查询。避免 SELECT *

qq_33807380的博客 1071

智能手表 BOM 表与版本管理记录

试产与量产阶段 智能手表 BOM 表与版本管理记录

hoony123的博客 1053

全面优化MySQL

MySQL性能瓶颈原因 硬件、系统因素 CPU 磁盘I/O 网络性能 操作系统争用 MySQL相关因素 数据库设计 索引、数据类型 应用程序性能 特定请求、短时事务 配置变量 缓冲区、高速缓存、InnoDB 瓶颈分析工具 sysstat工具集...

aohexi1719的博客 159

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

mysql十种优化,mysql的各种优化

mysql的各种优化mysql没索引与有索引的区别优点:当表中有大量记录时,若要对表进行查询,如果没用建立索引,搜索信息方式是全表搜索,是将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录,这样做会消耗大量数据库系统时间,并造成大量磁盘I/O操作;如果在表中针对一些字段建立了索引,然后在索引中找到符合查询条件的索引值,最后通过保存在索引中的ROWID(相当于页码)快速找到表中对应的...

weixin_39999781的博客 129

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

mysql 优化36_Mysql 优化建议

1、硬件层相关优化1.1、CPU相关在服务器的BIOS设置中,可调整下面的几个配置,目的是发挥CPU最大性能,或者避免经典的NUMA问题:1、选择Performance Per Watt Optimized(DAPC)模式,发挥CPU最大性能,跑DB这种通常需要高运算量的服务就不要考虑节电了;2、关闭C1E和C States等选项,目的也是为了提升CPU效率3、Memory Frequency(内...

weixin_30689519的博客 1717

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

如何对mysql优化

MySQL 作为广泛使用的开源关系型数据库管理系统,其性能优化是保障应用高效运行的关键。无论是面对高并发访问的Web应用,还是处理大规模数据分析的系统,MySQL的性能调优都是不可或缺的一环。本文将介绍一系列MySQL优化策略与实践,帮助我们开发者和数据库管理员提升MySQL数据库的性能。

学习和分享 898

mysql 索引优化 null_MySQL 优化 —— IS NULL 优化

引言本博客翻译自 MySQL 官网:IS NULL Optimization, MySQL版本 5.7。MySQL 对 IS NULL 的优化MySQL 可以对 IS NULL 执行和常量等值判断(列名= 常量表达式,如name = 'Tom')相同的优化。MySQL 可以利用索引和范围来搜索空值。例如:SELECT * FROM tbl_name WHERE key_col IS NULL;S...

weixin_42477505的博客 663

MySQL —— 优化

概念 在应用的开发过程中,由于初期数据量小,开发人员写SQL语句时更重视功能上的实现,但是当应用系统正式上线后,随着生产数据量的急剧增长,很多SQL语句开始逐渐显露出性能问题,对生产的影响也越来越大,此时这些有问题的SQL语句就成为整个系统性能的瓶颈,因此我们必须要对它们进行优化 MySQL优化方式有很多,大致可以从以下几点来优化MySQL: 从设计上优化 从查询上优化 从索引上优化 从存储上优化 查看SQL执行频率 MySQL客户端连接成功后,通过show [session|global] statu

weixin_46540606的博客 856

mysql优化是什么_MySQL优化概述

一. MySQL优化要点MySQL优化是一门复杂的综合性技术,主要包括:1 表的设计合理化(符合 3NF,必要时允许数据冗余)2.1 SQL语句优化(以查询为主)2.2 适当添加索引(主键索引,唯一索引,普通索引(包括联合索引),全文索引)3 分表技术(水平分割,垂直分割)4 读写分离(写包括update/delete/insert)5 存储过程(模块化编程,提高执行速度)6 MySQL配置优化7...

weixin_35450313的博客 583

mysql is null优化_如何优化mysql的is null?

给大家安利下MySQL的最新手册,就是如何优化mysql的is null?包括如果编写mysql is null的语句。《MySQL使用手册》第二章主要讲述了优化程序如何处理WHERE子句,例子中使用了SELECT语句,但是在DELETE和UPDATE语句中对WHERE子句的优化是一样的。本节讲的是MySQL如何优化ISNULL。MySQL如何优化IS NULLMySQL在col_nameISNU...

weixin_35273106的博客 3678

mysql 优化思路_MySQL优化思路及框架

MySQL优化框架1. SQL语句优化2. 索引优化3. 数据库结构优化4. InnoDB表优化5. MyISAM表优化6. Memory表优化7. 理解查询执行计划8. 缓冲和缓存9. 锁优化10. MySQL服务器优化11. 性能评估12. MySQL优化内幕MySQL优化需要在三个不同层次上协调进行:MySQL级别、OS级别和硬件级别。MySQL级别的优化包括表优化、查询优化和MySQL服务...

weixin_39976733的博客 132
上一篇: Mysql索引
下一篇: mysql where 加引号和不加引号
yjgithub
博客等级 码龄11年 53粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值