文章目录
一、索引
1.索引是什么?
索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址(类似于C语言的链表通过指针指向数据记录的内存地址)。
使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到该行数据对应的物理地址然后访问相应的数据,因此能加快数据库的查询速度。
索引就好比是一本书的目录,可以根据目录中的页码快速找到所需的内容。
索引是表中一列或者若干列值排序的方法。
建立索引的目的是加快对表中记录的查找或排序
2.索引的作用
设置了合适的索引之后,数据库利用各种快速定位技术,能够大大加快查询速度,这是创建索引的最主要的原因。
当表很大或查询涉及到多个表时,使用索引可以成千上万倍地提高查询速度。
可以降低数据库的I0成本,并且索引还可以降低数据库的排序成本。
加快表的查询速度,可以对字段排序
3.索引的优点
设置了合适的索引之后,数据库利用各种快速定位技术,能够大大加快查询速度,这是创建所有的最主要的原因。
当表很大或查询涉及到多个表时,使用索引可以成千上万倍地提高查询速度。
可以降低数据库的IO成本,并且索引还可以降低数据库的排序成本。
通过创建唯一性索引,可以保证数据表中每一行数据的唯一性。
可以加快表与表之间的连接。
在使用分组和排序时,可大大减少分组和排序的时间
4.索引的缺点
副作用:会额外占用磁盘空间,更新包含索引的表数据效率会变慢。
5.创建索引的原则:
1)对行数超过300行的表
2)表的主键字段、外键字段、多表连接的字段、唯一性较好的字段、不经常更新的字段、经常出现在where、group by 、order by语句的字段、小字段。
6.索引类型
1)普通索引 create index 索引名 on 表名 (字段(LEN)); alter table 表名 add index 索引名 (字段);
2)唯一索引 create unique index 索引名 on 表名 (字段(LEN)); alter table 表名 add unique 索引名 (字段);
3)主键索引 alter table 表名 add primary key (字段);
4)组合索引 create index 索引名 on 表名 (字段1,字段2,字段3,…); alter table 表名 add index 索引名 (字段1,字段2,字段3,…); select 查询时 where 语句中的条件字段 要与组合索引的字段排列顺序一致(最左原则)
5)全文索引 create fulltext index 索引名 on 表名 (字段); alter table 表名 add fulltext 索引名 (字段);
模糊查询: select 字段 from 表 where match(字段) against(‘查询内容’);
二、索引实验
1.先创一个普通索引
member表里面加id name cardid phone address remark text
给name创建一个索引
alter table member add index name_index(name);
查看索引
show create table member\G;
第二种创建普通索引方法
create index id_index on member (id);
show create table member\G;
2.创建唯一键索引
两种方法创建唯一键
alter table member add unique address_index(address);
show create table member\G;
create unique index cardid_index on member(cardid);
3.创建主键索引
alter table member1 add primary key(id);
show create table member1\G;
4.创建组合索引
create index quan_index on member1 (name,cardid,phone);
show create table member1\G;
5.创建组合索引
create fulltext index remark_index on member1(remark);
show create table member1\G;