MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构。
1、索引的分类
主键索引(primary key)
作用:独一无二的标识
特点:只能有一个列作为主键,也就是说不可以出现多个主键索引
唯一索引(unique key)
作用:将一个字段设置为唯一索引,可以避免重复的列出现
特点:可以将多个字段设置为唯一索引,也就是说可以出现多个唯一索引
常规索引(key / index)
特点:默认的
全文索引(fulltext)
作用:快速定位数据
特点:在特定的数据库引擎下才有
2、基础语法
2.1、设置索引
-- 1、创建表前,给字段设置索引CREATE TABLE `student` (`id` int(10) NOT NULL COMMENT '学生编号',`name` varchar(100) DEFAULT NULL COMMENT '学生姓名',`age` int(3) DEFAULT NULL COMMENT '学生年龄',PRIMARY KEY (`id`) --给字段`id`设置为主键索引) ENGINE=InnoDB DEFAULT CHARSET=utf8-- 2、创建表后,给字段设置索引,一般的索引名格式为:id_表名_索引名-- 方式一:create index `索引名` on `要设置为索引的字段名`-- 方式二:alter table `数据库名`.`表名` add fulltext index `索引名`(`要设置为索引的字段名`)
2.2、分析SQL的执行情况
explain select ... from ...
2.3、显示所有的索引信息
show index from `表名`
3、索引的作用
假设现在有一个字段为name,里面有100万条数据,其中有一个字段值叫:小吴!
现在我们要查找到小吴:
- 未给字段name设置索引:
可能要查几万条数据甚至十几万条数据才能查找到!
- 给字段name设置索引后:
根据索引直接定位到小吴,只查询一次!
4、索引原则
索引在小数据量的时候,用处不大! 在大数据量的时候,区别十分明显!
- 索引不是越多越好
- 不要对经常变动的数据加索引
- 小数据量的表不需要加索引
- 索引一般加在用来查询的字段上
5、索引的数据结构
Btree:InnoDB 的默认数据结构
阅读一篇非常好的文章就能大致清楚了:http://blog.codinglabs.org/articles/theory-of-mysql-index.html
2020年7月3日吴鎔杰因为紧张的学习就没看了!跳过!有机会再看!
