面试常问——MySQL索引01(概述)
一、什么是索引?
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。
索引是一种数据结构。数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据;索引的实现通常使用B树及其变种B+树。
更通俗的说,索引就相当于目录。为了方便查找书中的内容,通过对内容建立索引形成目录。索引是一个文件,它是要占据物理空间的。
二、索引有哪些优缺点?
索引的优点
1.可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
2.通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
索引的缺点
1.时间方面:创建索引和维护索引要耗费时间,具体地,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,会降低增/改/删的执行效率;
2.空间方面:索引需要占物理空间。
三、索引有哪几种类型?
-
主键索引: 数据列不允许重复,不允许为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),创建全文索引。