数据库之优化

目录

一、简述数据库优化

二、简述如何优化MySQL查询

1、使用索引

2、优化子查询

三、简述如何插入数据更加高效

四、表中包含几千万条数据该如何优化

五、简述MySQL的慢查询优化

六、简述对explain的理解

七、explain有哪些关注内容


一、简述数据库优化

        MySQL数据优化是多方面的,原则是减少系统的瓶颈,减少资源的占用,增加系统的反应速度。例如,通过优化文件系统,提高磁盘I/O的读写速度;通过优化操作系统调度策略,通过MySQL在高负荷情况下的负载能力;优化表结构、索引、查询语句等使查询响应更快。

        1、针对查询,我们可以通过使用索引、使用连接代替子查询的方式来提高查询速度。

        2、针对慢查询,我们可以通过分析慢查询日志,来发现引起慢查询的原因,从而有针对性的进行优化。

        3、针对插入,我们可以通过禁用索引、禁用检查等方式来提高插入速度,在插入之后再启用索引和检查。

        4、针对数据库结构,我们可以通过将字段很多的表拆分成多张表、增加中间表、增加冗余字段等方式进行优化。

二、简述如何优化MySQL查询

1、使用索引

        如果查询时没有使用索引,查询语句将扫描表中的所有记录。在数据量大的情况下,这样查询的速度会很慢。如果使用索引进行查询,查询语句可以根据索引快速定位到待查询记录,从而减少查询的记录数,达到提高查询速度的目的。

        索引可以提高查询的速度,但并不是使用带有索引的字段查询时索引都会起作用。有几种特殊情况,在这些情况下有可能使用带有索引的字段查询时索引并没有起作用。

        ①使用LIKE关键字的查询语句

        在使用LIKE关键字进行查询的查询语句中,如果匹配字符串的第一个字符为“%”,索引不会起作用。只有“%”不在第一位置时索引才会起作用。

        ②使用多列索引的查询语句

        MySQL可以为多个字段创建索引。一个索引可以包括16个字段,对于多列索引,只有查询条件中使用了这些字段中的第一个字段时索引才会被使用。

        ③使用OR关键字的查询语句

        查询语句的查询条件中只有OR关键字,且OR前后的两个条件中的列都是索引时,查询账才使用索引。否则,查询将不适用索引。

2、优化子查询

        使用子查询可以进行SELECT语句的嵌套查询,即一个SELECT查询的结果作为另一个SELECT语句的条件。子查询可以一次性完成很多逻辑上需要多个步骤才能完成的SQL操作。

        子查询虽然可以使查询语句很灵活,但执行效率不高。执行子查询时,MySQL需要为内层查询语句的查询结果建立一个临时表。然后外层查询语句从临时表中查询记录。查询完毕后,再撤销这些临时表。因此,子查询的速度会受到一定的影响。如果查询的数据量比较大,这种影响就会随之增大。

        在MySQL中,可以使用连接(JOIN)查询来替代子查询。连接查询不需要建立临时表,其速度比子查询要快,如果查询中使用索引,性能更好。

三、简述如何插入数据更加高效

        影响插入速度的主要是索引、唯一性校验、一次插入记录条数等。针对这些情况,可以分别进行优化。

        对于MyISAM引擎的表,常见的优化方法如下:

        1、禁用索引

        对于非空表,插入记录时,MySQL会根据表的索引对插入的记录建立索引。如果插入大量数据,建立索引会降低插入记录的速度。为了解决这种情况,可以在插入记录之前禁用索引,数据插入完毕之后再开启索引。对于空表批量导入数据,则不需要进行此操作,因为MyISAM引擎的表是在导入数据之后才建立索引的。

        2、禁用唯一性检查

        插入数据时,MySQL会对插入的记录进行唯一性校验。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿核试Bug愁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值