在线客服
扫描二维码
下载博学谷APP
扫描二维码
关注博学谷微信公众号
MySQL数据库优化可以从哪些方面入手?具体怎么做?一般我们主要从优化SQL语句、优化数据库结构、优化Mysql服务器等几方面入手,而优化SQL语句又可以分为优化查询语句和其他执行语句;数据库结构也可以从字段类型、字符编码、适当拆分、增加冗余和数据库表来做优化;至于优化Mysql服务器就更简单了,需要遵循一定的优化原则即可。现在我们来看看具体的优化方案吧!

一、优化SQL语句
1、优化查询语句
(1)通过Explain和Describe关键字分析select查询语句,从而使开发人员知道查询效率低的原因。语法如下:explain select * from bookmanager where Name='admin' \G;
(2)通过添加索引进行优化
说起数据库的性能,索引可能使最物美价廉的东西了。使用索引可以快速的定位表中的某条记录,不用添加内存、不用修改程序,也不用调用sql语句,只需执行一个创建正确的索引,查询速度就可能提高千倍万倍。索引并不一定是主键或者唯一的字段,如果表中的某个字段总是被搜索,就可以为其创建索引。创建索引的语句如下:create index index_name on table_name(manName); 使用索引应注意的事项:使用多列索引时,查询条件必须使用索引的第一个字符。符;like关键字配置的字符串不能以符号“%”开头;or关键字连接的所有条件都必须使用索引。如果or前后有一个条件的列不是索引,那么查询中讲不使用索引。
(3)优化Order by
有两种方式如下:索引优化:对by后的列添加索引,从而大达到优化的目的;where+order by 的组合优化:通过where进行限制后在进行order by。
(4)优化group by(同3中通过加索引和where进行优化)
(5)优化limit
(6)优化子查询:在mysql中通过使用连接查询来代替子查询,从而达到优化目的。原因:子查询在执行的时候 数据库需要位内层查询语句的查询结果建立一个临时表,然后外层语句查询临时表,所以子查询的效率比较低,而连接查询就不存在这个问题。
2、优化其他执行语句
(1)优化insert语句:禁用索引,禁用唯一性检查,使用一条insert插入多条语句。
(2)优化update语句:使用一个update语句同时做多个更新。
(3)优化delete语句:删除一条记录的时间与索引的数量成正比。删除一个表的所有行,使用truncate table Tbname 而不要使用delete from table。
二、优化数据库结构
1、优化字段类型
数据库最耗时的就是IO处理,所以尽可能减少IO读写量。数字类型:尽量不要使用double类型,不仅是长度问题,还有精度问题。对于整数,数据量大时区分TinyInt、Int、BigInt,如果确定不实用负数,添加unsigned定义;字符类型:尽量不要使用text类型,性能低于char和varchar,定长使用char,不定长使用varchar;时间类型:尽量不使用Timestamp,只精确到某一天的话,可用Date类型; Enum和Set:状态字段用enum,如果存放可预先定义的属性数据可以尝试用set。
2、优化字符编码
3、适当进行拆分
4、适当增加冗余
5、优化数据库表
三、优化Mysql服务器
优化Mysql服务器要遵循以下的优化原则:内存中的数据要比磁盘上的数据访问的快;让数据尽可能长时间的留在内存里能减少磁盘读写活动的工作量;让索引信息留在内存里要比让数据记录的内容留在内存里更为重要。
看完MySQL数据库优化的三大方面,相信大家对怎么做优化都有了大致的了解。主要要求大家从全局出发考虑优化问题,而不仅仅只是片面的调整。大家对MySQL数据库优化的相关内容感兴趣的话,可以继续关注该栏目,资讯将不定时更新MySQL数据库优化的内容。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
参加java程序员培训需要注意哪些问题?
Java编程语言因为高薪资,就业率高,招聘岗位多而备受欢迎。Java学习难不难?应该如何学习Java?这些问题对于初学者来说并不陌生。今天博学谷小编主要针对参加Java程序员培训时,需要注意哪些问题与大家分享,希望可以帮助到更多的Java学习者。那参加java程序员培训需要注意哪些问题?
9431
2019-08-08 12:00:42
什么是微服务?微服务优缺点分析
微服务是近些年流行起来的热门概念,与传统的的IT架构相比,它有许多的优势。那么到底什么是微服务呢?本文将对微服务优缺点进行分析,让大家全面的了解微服务。
9894
2019-08-13 09:59:51
如何理解学习Java面向对象
在编程开发中有面向过程和面向对象两种编程思维,很多朋友在学习面向对象的时候,总是很难理解。那到底什么是面向对象。面向对象有什么特点,应该如何理解面向对象呢?
8345
2019-10-28 18:47:14
如何管理Spring Bean的生命周期?具体步骤解析
如何管理Spring Bean的生命周期?回答这个问题之前,我们可以先来看看Bean的定义,Bean是一个被实例化,组装,并通过Spring IOC容器所管理的对象。换句话说,那些组成应用程序的主体以及由Spring IOC容器所管理的对象就是bean。另外,在Spring中bean默认都是单例的。想要管理Spring Bean的生命周期,大概要按照以下步骤去做:
7545
2020-01-14 10:43:38
Java编程八大技能你还不会?
Java编程八大技能你还不会?随着大数据的快速发展,应用范围超广的Java编程语言越来越被看好。许多人包括在职程序员也兴致勃勃也报了Java编程课程,你是否也下定决心要进入Java开发呢?在大家进行Java培训学习之前,想和大家说明一个问题。Java技术的世界是多元而复杂的,需要程序员不断学习。想入行必须做好吃苦的准备。而要想作为互联网Java工程师这些基础技能必须要掌握。
6066
2020-06-12 14:31:18
