mysql优化

1.概述

    (1)优化的好处:减少磁盘空间的占用,提高查询速度

    (2)需考虑的方面:数据冗余,查询和更新的速度,字段的数据类型

2.查询方面的优化:

    (1)方法一:将字段很多的表分解成多个表

    原因:对于字段较多的表,如果有些字段的使用频率很低,可以将这些字段分离出来形成新表,

    因为当一个表的数据量很大时,会由于使用频率低的字段的存在而变慢。

    (2)方法二:增加中间表

    原因:对于经常联合查询的表,可以建立中间表以提高查询效率。通过建立中间表,把需要经常

    联合查询的数据插入到中间表中,然后将原来的联合查询修改为对中间表的查询,以提高查询

    效率。

    (3)增加冗余字段

    原因:表的规范程度越高,表与表之间的关系就越多,需要连接查询的情况也就越多。例如员工的

    信息存储在staff表中的,部门信息存储在department表中,我们要查询一个员工所在部分的名称

    必须通过staff的department_id与department表关联,如果经常需要这个操作,会浪费很多时间,所以

    可以在staff表中增加一个冗余字段department_name,这样就不用每次关联查询了。

    (4)使用索引

        (a)在使用like查询语句时,如果第一个字符是'%'索引是不起作用的

        (b)在多列进行索引时,只有查询条件中使用了这些字段的第一个字段,索引才会起作用

        (c)使用or关键字的查询语句,只有or前后的俩个条件都加了索引,索引才起作用

3.插入记录的优化:

    影响因素:索引,唯一性校验,一次插入记录条数

     (a)MyISAM引擎插入优化:

        (1)方法一:禁用索引

        原因:对于非空表,插入记录时,MySql会根据标的索引对插入的记录建立索引。如果插入大量数据,

        建立索引会降低插入的速度,所以我们可以在插入记录前禁用索引,数据插入完毕后再开启索引。

        禁用索引:alter table table_name disable keys

        启用索引:alter table table_name enable keys

        (2)禁用唯一性检查

        原因:插入数据时,MySql会对插入的数据进行唯一性校验,这样会降低插入的速度,所以我们可以在插入

        记录前禁用唯一性检查,等到记录插入完毕后再次启用。

        禁用唯一性检查:set unique_checks=0

        启用唯一性检查:set unique_checks=1

        (3)采用批量插入

        原因:用一条Sql语句插入多条记录可以减少与数据库的连接

        insert into test values('1','apple'),('2','pair'),('3','orage');

        (4)使用LOAD DATA INFILE批量导入

        原因:LOAD DATA INFILE比insert插入速度快

    (b)InonoDB引擎插入优化:

        (1)方法一:禁用唯一性检查

        (2)方法二:禁用外键检查

        禁用外键检查:set foreign_key_checks=0

        启用外键检查:set foreign_key_checks=1

        (3)方法三:禁止自动提交

        禁止自动提交:set autocommit=0

        恢复自动提交:set autocommit=1

4.子查询优化

(1)子查询缺点:子查询虽然查询灵活,但是执行效率不高,原因为mysql需要为内层查询结果建立

另一个临时表,外层查询从临时表中查询,查询完成后还需要撤销临时表,数据量很大时,影响更大,

(2)优化方法:在MySql中,可以使用连接(join)查询替代子查询,因为连接查询不需要建立中间表,所以速度

比子查询要快。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值