目的:在牺牲物理存储空间的前提下,加快查询的速度。
显示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 这个值越小越好,越大说明查询越低效mysql种类:①主键索引【primary key】(把某列设为主键,则那一列就是主键索引)
②惟一索引【unique key】(即该列具备惟一性,又是索引)
③普通索引【index】
④全文索引【fulltext】(用于分词)面试
1.在常常查询的列上加索引
2.惟一性太差的字段不适合单独作索引,即便频繁的查询条件
select * from user where sex = '男';
3.不会出如今where子句中的字段不须要加索引,频繁变化的字段也不须要加索引sql
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的索引是什么?怎么优化? 性能优化