6. 了解过Mysql的索引嘛 ?
MYSQL索引主要有 : 单列索引 , 组合索引和空间索引 , 用的比较多的就是单列索引和组合索引 , 空间索引我这边没有用到过
单列索引 : 在MYSQL数据库表的某一列上面创建的索引叫单列索引 , 单列索引又分为
- 普通索引:MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点。
- 唯一索引:索引列中的值必须是唯一的,但是允许为空值
- 主键索引:是一种特殊的唯一索引,不允许有空值
- 全文索引: 只有在MyISAM引擎、InnoDB(5.6以后)上才能使⽤用,而且只能在CHAR,VARCHAR,TEXT类型字段上使⽤用全⽂文索引。
组合索引 : 在MYSQL数据库表的多个字段组合上创建的索引 , 称为组合索引也叫联合索引
- 组合索引的使用,需要遵循左前缀原则
- 一般情况下,建议使用组合索引代替单列索引(主键索引除外)
7. 索引的底层数据结构了解过嘛 ?
索引是在存储引擎中实现的,也就是说不同的存储引擎,会使用不同的索引
MyISAM和InnoDB存储引擎:只⽀支持B+ TREE索引, 也就是说默认使用BTREE,不能够更换
MEMORY/HEAP存储引擎:支持HASH和BTREE索引
8. MYSQL支持的存储引擎有哪些, 有什么区别 ?
MYSQL存储引擎有很多, 常用的就二种 : MyISAM和InnoDB , 者两种存储引擎的区别 ;
- MyISAM支持256TB的数据存储 , InnoDB 只支持64TB的数据存储
- MyISAM 不支持事务 , InnoDB 支持事务
- MyISAM 不支持外键 , InnoDB 支持外键
9. 什么是聚簇索引什么是非聚簇索引 ?
聚簇索引
在使用InnoDB存储引擎的时候, 主键索引B+树叶子节点会存储数据行记录,简单来说数据和索引在一起存储 , 这就是聚簇索引
非聚簇索引
在使用MyISAM存储引擎的时候, B+树叶子节点只会存储数据行的指针,简单来说数据和索引不在一起 , 这就是非聚簇索引
10. 在一个非主键字段上创建了索引, 想要根据该字段查询到数据, 需要查询几次 ?
需要查询二次
如果使用MyISAM存储引擎 , 会首先根据索引查询到数据行指针, 再根据指针获取数据
如果是InnoDB存储引擎 , 会根据索引查找指定数据关联的主键ID , 再根据主键ID去主键索引中查找数据