互联网公司面试必问的mysql题目(下)

作者:微信小助手

发布时间:2019-01-30T19:05:18

上篇文章回顾:互联网公司面试必问的mysql题目(上)

什么是数据库索引?索引有哪几种类型?什么是最左前缀原则?索引算法有哪些?有什么区别?
关于数据库索引的内容也可以参考这篇文章: 【思维导图-索引篇】搞定数据库索引就是这么简单

索引是对数据库表中一列或多列的值进行排序的一种结构。一个非常恰当的比喻就是书的目录页与书的正文内容之间的关系,为了方便查找书中的内容,通过对内容建立索引形成目录。索引是一个文件,它是要占据物理空间的。

主键索引:
数据列不允许重复,不允许为NULL.一个表只能有一个主键。

唯一索引:
数据列不允许重复,允许为NULL值,一个表允许多个列创建唯一索引。

可以通过
ALTER TABLE table_name ADD UNIQUE (column); 
创建唯一索引

可以通过
ALTER TABLE table_name ADD UNIQUE (column1,column2);
创建唯一组合索引

普通索引:
基本的索引类型,没有唯一性的限制,允许为NULL值。

可以通过ALTER TABLE table_name ADD INDEX index_name (column);创建普通索引

可以通过ALTER TABLE table_name ADD INDEX index_name(column1, column2, column3);创建组合索引

全文索引:
是目前搜索引擎使用的一种关键技术。

可以通过ALTER TABLE table_name ADD FULLTEXT (column);创建全文索引

最左前缀

  • 顾名思义,就是最左优先,在创建多列索引时,要根据业务需求,where子句中使用最频繁的一列放在最左边。

  • 还有一个就是生效原则 比如

index(a,b,c)
where a=3    只使用了a
where a=3 and b=5    使用了a,b
where a=3 and b=5 and c=4    使用了a,b,c
where b=3 or where c=4    没有使用索引
where a=3 and c=4    仅使用了a
where a=3 and b>10 and c=7    使用了a,b
where a=3 a