本章我们将学习MySQL中的索引,本文将从索引的作用、索引的分类、创建索引的语法、索引的使用策略以及索引的实现原理等方面带大家了解索引。
索引的作用
索引的作用就是加快查询速度,如果把使用了索引的查询看做是法拉利跑车的话,那么没有用索引的查询就相当于是自行车。目前实际项目中表的数据量越来越大,动辄上百万上千万级别,没有索引的查询会变得非常缓慢,使用索引成为了查询优化的必选项目。
索引的概念
索引其实是一种特殊的数据,也保存在数据库文件中,索引数据保存着数据表中实际数据的位置。类似书籍前面的目录,这个目录就保存了书中各个章节的页数,通过查看目录我们可以快速定位章节的页数,从而加快查找速度。
我们来看一段查询语句:
select * from book where id = 1000000;
假设书籍表中有几百万行数据,没索引的查询会遍历前面的100万行数据找到结果,如果我们在id上建立主键索引,则直接在索引上定位结果,速度要快得多。
索引的优缺点
优点:提高查询速度
缺点:本身也是数据,会占用磁盘空间;索引的创建和维护也需要时间成本;进行删除、更新和插入操作时,因为要维护索引,所以速度会降低。
使用索引的语法
创建索引
建表的同时创建索引
create table 表名
(
字段名 类型,
…
字段名 类型,
index 索引名称 (字段名)
);
建表后添加索引
alter table 表名 add index 索引名(字段名);
或
create index