MySQL 索引
一、介绍
索引是通过某种算法,构建出一个数据模型,用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多,如果表中查询的列有一个索引,MySQL能够快速到达一个位置去搜索数据文件,而不必查看所有数据,那么将会节省很大一部分时间。
索引类似一本书的目录,比如要查找’student’这个单词,可以先找到s开头的页然后向后查找,这个就类似索引。
二、索引的分类
索引是存储引擎用来快速查找记录的一种数据结构
-
按照实现的方式分类,主要有Hash索引 和 B+Tree索引
-
按照功能划分,索引划为以下分类:

三、单列索引、组合索引
1、创建索引
-
创建表时直接指定
CREATE TABLE student( sid int primary key, -- 主键是具有唯一性并且不允许为NULL,所以他是一种特殊的唯一索引 card_id varchar(20), name varchar(20), gender varchar(20), age int, birth date, phone_num varchar(20), score double, index index_name(name), -- 给name列创建普通索引 unique index_card_id(card_id) -- 给card_id列创建唯一索引 )
-
直接创建
create index index_gender on student(gender); -- 普通索引 create unique index index_card_id on student(card_id); -- 唯一索引 create index index_phone_name on student(phone_num, name); -- 组合普通索引 create unique index index_phone_name on student(phone_num, name); -- 组合唯一索引
-
修改表结构(添加索引)
alter table student add index index_age(age