更新时间:2020年02月24日17时17分 来源:传智播客 浏览次数:
1、为什么要学索引
思考:在一本字典中,如何查找一个字?
分析: 一般的应用系统对比数据库的读写比例在10:1左右,而且插入操作和更新操作很少出现性能问题,遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,所以查询语句的优化显然是重中之重。
2、 什么是索引
索引相当于目录结构,其内部有一定的算法,可以快速的帮我们定位到,相应的数据位置。
3、索引的好处
当数据比较多的时候可以加快查询的速度.
4、使用索引的原则
可以打开京东页面
在经常需要搜索的列上,可以加快搜索的速度;
在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度;
在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以 利用索引的排序,加快排序查询时间;
在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。
5、索引的类型
primary key 主键索引保证数据的唯一性,而且不能为空,唯一标识数据库表中的每条记录
unique 唯一索引 防止数据出现重复
index(key) 普通索引 仅仅只是为了提高查询的速度
fulltext 全文索引(不支持中文)
6、索引的使用
(1)建表的时候创建索引
create table study(
id mediumint not null auto_increment,
sn char(10) not null default 0 comment '学号',
xing varchar(10) not null default '' comment '姓',
ming varchar(10) not null default '' comment '名',
primary key(id),
unique sn(sn),
index x_m(xing,ming)
)engine=MyISAM default charset=utf8;
查看创建成功的表的结构
show create table study \G
使用desc查看表的结构
除了主键索引,其他索引设置的同时可以给其起一个”名称”,名称不设置与该索引字段名称一致
给存在的数据表增加索引
alter table 表名 add primary key (id);
alter table 表名 add unique key [索引名称] (字段);
alter table 表名 add key [索引名称] (字段);
alter table 表名 add fulltext key [索引名称] (字段);
这里的索引名称都是可以不写的,那么默认就是字段的名称。
a 先添加一张表
create table study1(
id mediumint not null,
sn char(10) not null default 0 comment '学号',
xing varchar(10) not null default '' comment '姓',
ming varchar(10) not null default '' comment '名'
)engine=myisam default charset='utf8';
b 为已经创建好的表增加索引
alter table study1 add primary key(id); // 主键索引
alter table study1 add unique sn(sn); // 给学号增加唯一索引
alter table study1 add index x_m(xing,ming); // 给xingming添加
复合索引
c 查看已经建立好的索引: