MyISAM是MySQL 5.5之前版本默认的存储引擎,从5.5之后,InnoDB开始成为MySQL默认的存储引擎。MyISAM使用B-Tree实现主键索引、唯一索引和非主键索引。InnoDB中非主键索引使用的是B-Tree数据结构,而主键索引使用的是B+Tree。想直观查看数据结构的小伙伴可以点击下面这个连接 https://www.cs.usfca.edu/~galles/visualization/Algorithms.html

但是有的时候会发现我们明明创建了索引,但是索引却没有生效,下面给大家介绍几种索引失效的情况:
1.如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因)
要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引
2.对于多列索引,不是使用的第一部分,则不会使用索引
3.like查询以%开头
4.如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引
5.如果mysql估计使用全表扫描要比使用索引快,则不使用索引