在线客服
扫描二维码
下载博学谷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数据库优化的内容。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
MYSQL好学吗?一般要学多久?
Mysql好学吗?一般要学多久?对于有一定计算机语言基础的同学来说,Mysql算是非常好学的数据库了。学多久要看自身基础,没有基础的同学也不用担心,Mysql绝对可以作为大家入门数据库的第一步。如果报名线上培训班有老师的指导的话,最快8天就可以掌握Mysql数据库的知识了。那么该如何学习Mysql呢?
16938
2019-08-16 16:38:27
如何管理Spring Bean的生命周期?具体步骤解析
如何管理Spring Bean的生命周期?回答这个问题之前,我们可以先来看看Bean的定义,Bean是一个被实例化,组装,并通过Spring IOC容器所管理的对象。换句话说,那些组成应用程序的主体以及由Spring IOC容器所管理的对象就是bean。另外,在Spring中bean默认都是单例的。想要管理Spring Bean的生命周期,大概要按照以下步骤去做:
5959
2020-01-14 10:43:38
MySQL中数据库的设计归纳讲解
谈到MySQL中数据库的设计,相信大家都知道这是实现实际业务的重要一步,因此对于Java学习者来说,深入了解和学习数据库的设计是十分有必要的。本文为大家准备了一份MySQL中数据库的设计归纳讲解,内容包括了多表之间的关系,像是分类、实现以及案例分析,还有数据库设计的范式概念和分类等等。有学习兴趣的朋友现在赶紧接着看下去吧!
4436
2020-02-13 14:53:59
如何才能达到Java架构师技术要求标准?
Java架构师需要熟练掌握复杂的数据结构和算法、熟练使用linux操作系统,Linux线上排除故障、熟悉tcp协议、系统集群、负载均衡、反向代理、动静分离,网站静态化、数据库设计能力、队列中间件等知识。
5128
2020-02-14 18:33:54
成为架构师,读书之外什么更重要?
做架构师这几年,除了去官网看技术说明书学习前沿技术,也买了不少架构师思维层面的书籍,硬性与软性实力同时提升,让自己做工作才游刃有余。 最近有不少同学留言让我推荐架构师相关的书籍,特此找出曾经拜读的几本书,分享给大家,也希望大家多看看别人的看法和观念,开拓一下思路。
2665
2022-07-25 11:32:10