MySQL理解与优化

索引

目的:在牺牲物理存储空间的前提下,加快查询的速度。
显示mysql物理存储的位置: show global variables like '%datadir%';
显示慢查询的次数:show variables like 'long_query_time'; # 默认10s
查看索引的使用情况:show status like 'Handler_read%';
handler_read_key 这个值越大越好,越大说明使用索引的次数就越多
handler_read_rnd_next 这个值越小越好,越大说明查询越低效

种类:①主键索引【primary key】(把某列设为主键,则那一列就是主键索引)
②唯一索引【unique key】(即该列具有唯一性,又是索引)
③普通索引【index】
④全文索引【fulltext】(用于分词)

添加索引的注意事项

1.在经常查询的列上加索引
2.唯一性太差的字段不适合单独做索引,即使频繁的查询条件
select * from user where sex = '男';
3.不会出现在where子句中的字段不需要加索引,频繁变化的字段也不需要加索引

数据库引擎:InnoDB和MyISAM

1.MyISAM不支持外键,InnoDB支持
2.MyISAM不支持事务,不支持外键,InnoDB支持
3.两者对数据信息的存储处理方式不同(如果存储引擎是MyISAM则创建一张表,对应三个文件,如果InnoDB则只有一个文件*.frm,数据存放在ibdata)
4.对于MyISAM数据库需要定时清理,你drop之后物理存储也不会释放
删除语句:optimize table 表名
5.优化:对于InnoDB可以设置【innodb_additional_mem_pool = 64M】【innodb_buffer_pool_size = 1G】。对于MyISAM设置【key_buffer_size】

资源

1.数据库面试常问的一些基本概念
2.数据库性能优化之SQL语句优化
3.MySQL数据库开发常见问题及几点优化!
4.MySQL的索引是什么?怎么优化?

    原文作者:mysql索引优化
    原文地址: https://my.oschina.net/u/2489258/blog/1795028
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞