MySQL介绍包括如下几个方面
- Mysql引擎
- 索引结构分类
Mysql引擎
- MyISAM:不支持事务、也不支持外键,优势是访问速度快,对事务完整性没有
- InnoDB:用于事务处理应用程序,具有众多特性,包括ACID事务支持。(提供行级锁);支持自动增长列,支持外键约束
- InnoDB不支持全文索引,而MyISAM支持
- Memory存储引擎使用存在于内存中的内容来创建表
- Merge存储引擎是一组MyISAM表的组合,这些MyISAM表必须结构完全相同,merge表本身并没有数据,对merge类型的表可以进行查询,更新,删除操作,这些操作实际上是对内部的MyISAM表进行的
索引结构分类
-
BTree索引:B-Tree索引可以被用在像=,>,>=,<,<=和BETWEEN这些比较操作符上;而且还可以用于LIKE操作符;
- 1.对于多列索引的使用场景:1).全字段匹配;2).匹配部分最左前缀; 3). 匹配第一列;4).匹配第一列范围查询(可用用like a%,但不能使用like %b);5).
最左前缀:查询条件中的所有字段需要从左边起按顺序出现在多列索引中,查询条件的字段数要小于等于多列索引的字段数,中间字段不能存在范围查询的字段(<,like等),这样的sql可以使用该多列索引。
-
Hash索引:哈希索引就是采用一定的哈希算法,把键值换算成新的哈希值
- 1.它们只能用于对等比较,例如=和<=>操作符(但是快很多)。它们不能被用于像<这样的范围查询条件。假如系统只需要使用像“键值对”的这样的存储结构,尽量使用hash类型索引。
- 2.优化器不能用hash索引来为ORDER BY操作符加速。(这类索引不能被用于搜索下一个次序的值)
- 3.mysql不能判断出两个值之间有多少条数据(这需要使用范围查询操作符来决定使用哪个索引)。假如你将一个MyISAM表转为一个依靠hash索引的MEMORY表,可能会影响一些语句(的性能)。
- 4.只有完整的键才能被用于搜索一行数据。(假如用B-tree索引,任何一个键的片段都可以用于查找。我觉得可能意味着带通配符LIKE操作符会不起作用)。
-
full-text全文索引