MySql
1、什么是索引?(index)
-
官方定义:一种帮助mysql提高查询效率的数据结构
-
索引的优缺点:
- 大大提高数据查询速度
- 维护数据耗费数据库资源
- 索引需要占用磁盘空间
- 增删改的时候,维护索引时,速度会受到影响(这个地方面试官可能会问你了,为什么增删改会影响速度,而查询不会呢?目的是为了引出索引的数据结构,下面会详细说明,这里先有个基本的映象,面试被问到了,别一股脑说增删改查。)
-
索引分类
-
主键索引
设定为主键后数据库自动创建索引,innodb为聚簇索引
-
单列索引(单值索引)
一个索引只包含单个列,一个表可以有多个单列索引
-
唯一索引
索引列的值必须唯一,允许有空值
-
复合索引
一个索引包含多个列
-
全文索引(Full Text:MySql5.7之前,基于MYISAM引擎)
(注:索引分类这块儿,没什么可说的,如果面试被问到了,背八股吧,上面比较重要的主键索引和全文索引一定要记得说,然后根据字面意思稍微扩展一些,只要这几个能背下来,扩展「瞎说」还不手到擒来吗?总之唬住面试官)
-
2、索引的基本操作(面试的话这部分内容可跳过)
-
主键索引 自动创建
create table user (id varchar(20) primary key,name varchar(20));
查看索引
show index from user;
(一般面试如果考SQL语句的话,有两种考法,一种是给一条语句让你分析,比如有没有错误或者有没有优化,另一种就是让你写一条SQL语句了,大厂一般会考的比较复杂一些,但是别慌,能写多少是多少。不过以我的经验来看,一般考SQL语句的不太多,因为面试官写多了CRUD,数据库语句也不一定写的有多好,避免露怯一般不怎么会问。)
-
单列索引(普通索引、单值索引)【关键字:key】
-
建表时创建
create table `user2`( id varchar(20) PRIMARY KEY, name varchar(20), key(name)#给name设索引 )
-