读运维MySQL计划有感1 - mysql默认索引,mysql执行计划,mysql索引分类
(7)ALL: 全表扫描,没有任何索引可以使用时。这是最差的情况,应该避免。
-- explain
explain select * from f_qa_item where delete_flag = 0 and qa_type = 'choice'
当加入索引给qa_type,type All-> ref
ref:此类型通常出现在多表的 join 查询, 针对于非唯一或非主键索引, 或者是使用了最左前缀规则索引的查询(换句话说,连接不能基于键值选择单行,可能是多行)。
1.普通索引index :加速查找
2.唯一索引
主键索引:primary key :加速查找+约束(不为空且唯一)
唯一索引:unique:加速查找+约束 (唯一)一张表只允许存在一个,比如用户表用户昵称
3.联合索引
-primary key(id,name):联合主键索引
-unique(id,name):联合唯一索引
-index(id,name):联合普通索引
4.全文索引fulltext :用于搜索很长一篇文章的时候,效果最好。
MySQL 5.6 及以后的版本,MyISAM 和 InnoDB 存储引擎均支持全文索引;
https://blog.csdn.net/mrzhouxiaofei/article/details/79940958
5.空间索引spatial :了解就好,几乎不用
mysql-5.1版本之前默认引擎是MyISAM,之后是innoDB
MyISAM diff innoDB:
MyISAM存储引擎的特点是:表级锁、不支持事务和全文索引,适合一些CMS内容管理系统作为后台数据库使用,但是使用大并发、重负荷生产系统上,表锁结构的特性就显得力不从心;
InnoDB存储引擎的特点是:行级锁、事务安全(ACID兼容)、支持外键、不支持FULLTEXT类型的索引(5.6.4以后版本开始支持FULLTEXT类型的索引)。InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全存储引擎。InnoDB是为处理巨大量时拥有最大性能而设计的。它的CPU效率可能是任何其他基于磁盘的关系数据库引擎所不能匹敌的。
mysql聚簇索引、非聚簇索引 https://blog.csdn.net/w605283073/article/details/95255618