1. MySQL 索引是什么?
索引是帮助MySQL高效获取数据的数据结构。
2.MySQL 的引擎
INNODB: 用的最多的,mysql最新版默认的引擎;
MYISAM: 早些年使用的;
INNODB | MYISAM | |
事务 | 支持 | 不支持 |
锁 | 行锁 | 表锁 |
外键约束 | 支持 | 不支持 |
全文索引 | 不支持 | 支持 |
表空间 | 较大 | 较小 |
3.索引的分类
a)主键索引,PRIMARY KEY
唯一的标识,主键不可重复,智能有一列作为主键;
b)唯一索引,UNIQUE KEY
避免重复的列出现,唯一索引可以重复,多个列都可以标识为唯一索引;
c)常规索引,KEY/INDEX
默认的,index,key 关键字来设置;
d)全文索引,FullText
在特殊引擎才有,MyISAM;
快速定位数据;
4.索引的使用
a)在创建表的时候给字段加索引;
b)创建完毕后,增加索引;
---------------------显示所有的索引信息
SHOW INDEX FROM bomb;
---------------------增加一个索引
ALTER TABLE student ADD FULLTEXT INDEX phone(phone);
---------------------EXPLAIN分析SQL执行的状况
EXPLAIN SELECT * FROM bomb;
5.索引的原则
a)索引 不是越多越好;
b)不要对进程变动数据加索引;
c)小数据量的表不需要加索引;
d)索引一般加在常用的查询字段上;
6.MySQL优化
a)避免使用*查询;
b)尽量少嵌套子查询,这种查询会消耗大量的CPU资源;
c)避免使用耗费资源操作 DISTINCT、 UNION、UNION all、 ORDER BY;
d)对于有比较多的or运算的查询,建议分成多个查询,用union all 联结起来;
e)合理使用索引;