mysql索引优化

mysql优化一般包括:sql语句优化,索引优化,表的优化,服务器的优化等

其中个人最重要的是索引优化

索引优化可以解决大多是sql的性能问题,下面是一些,加了索引,可能会出现用不到索引的情况。

1,在使用like语句进行模糊查找时,%不能放在第一位,最好放在字段后面,这样可以避免有索引但是用不到索引问题

2,在使用where条件语句时,where后面的or或者and条件二端的字段必须同时使用索引时,索引才能生效,否则都有不到索引

3,mysql还提供了一个常量值,来检验你的数据库是否需要加索引,

  show status like 'Handler_read_key';  这个Handler_read_key是指一个行被索引值读的次数,当然是越高越好

  show status like 'Handler_read_rnd_next';这个Handler_read_rnd_next的值越高,说明查询运行效率低下,需要增加索引来补救。

4,优化group by和order by 尽量的少使用他们,如果使用group by时默认会对结果排序,影响速度,我们可以取消排序来提速,

group by + 条件字段+order by null 来停止排序。

5,还有尽量的不使用嵌套查询,嵌套查询会是外部的表不能使用索引,只能嵌套表可以使用索引,我们可以使用普通的t1.id=t2.uid方式来取代嵌套查询,更便捷的是我们可以使用左连接来代替嵌套查询(左连接可以是二个表都使用索引)

6、表的优化:

(1)检测表是否有错误

   check table 表名

(2)优化表的空间

    optimize table 表名;可以将表中的碎片和空洞移除,如果表数据量大的时候,要在空闲的时候做,此操作会占用cpu和内存,影响使用

6、当大数据量进行插入和导出时,可以使用load data + outfile/infile来操作,导出时,只导出表的数据,而不导出表的结构和操作语句,节省空间和时间

    而我们平常使用的mysqldump语句导出数据,会把表的结构和操作语句都全部导出,更要命的是,会把导出表的数据库中的表锁定,影响使用。

    接着在进行大数据量导入和导出时,我们还可以通过使用关闭索引来提高导入和导出的速度,等导入和导出后开启索引

  alter table 表名 disable keys; 关闭索引  alter table 表名 enable keys;开启索引

   注意:关闭索引时,一般只关闭普通索引,而不关闭唯一索引(当你完全确认不会有重复行时,也可以关闭唯一索引)

  还有一点就是对于innodb类型的表,可以使用导入或者导出前关闭事务的自动提交,等导入或导出后,开启事务统一提交事务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值