1. 概念
索引是通过某种算法,构建出一个数据模型,用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多,如果表中查询的列有一个索引,MySQL能够快速到达一个位置去搜索数据文件,而不必查看所有数据,那么将会节省很大一部分时间。
索引类似一本书的目录,比如要查找’student’这个单词,可以先找到s开头的页然后向后查找,这个就类似索引。
2. 索引分类
①按实现方式分类:Hash索引和B+tree索引
Hash索引:
B+tree索引:
②按功能分类:
单列索引:一个索引只包含单个列,但一个表中可以有多个单列索引;
普通索引:MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点。
普通索引创建
1 -- 方式1-创建表的时候直接指定 2 create table student( 3 sid int primary key, 4 card_id varchar(20), 5 name varchar(20), 6 gender varchar(20), 7 age int, 8 birth date, 9 phone_num varchar(20), 10 score double, 11 index index_name(name) -- 给name列创建索引 12 ); 13 14 -- 方式2-直接创建 15 -- create index indexname on tablename(columnname); 16 create index index_gender on student(gender); 17 18 -- 方式3-修改表结构(添加索引) 19 -- alter table tablename add index indexname(columnname) 20 alter table student add index index_age(age);