11.索引的基本使用

1.简介
索引是一种特殊的数据结构,类似于图书的目录,它能够极大地提升数据库的查询效率。如果没有索引,在查询数据时必须扫描表中的所有记录才能找出符合条件的记录,这种全表扫描的查询效率非常低。

2.种类

索引种类描述
普通索引最基本的索引,没有任何限制,仅加速查询
唯一索引索引列的值必须唯一,但允许有空值
主键索引一种特殊的唯一索引,不允许有空值。一般是在建表的同时自动创建主键索引
复合索引两个或多个列上的索引被称作复合索引
全文索引对文本内容进行分词索引

3.使用

#创建普通索引
create index indexName on tableName(field(length));

#创建唯一索引
create unique index indexName on tableName(field(length));

#创建复合索引
create index indexName on tableName(field1, field2,,fieldN);

#删除索引
drop index indexName on tableName;

#查看索引
show index from tableName;

4.复合索引前导列特性
在MySQL中,如果创建了复合索引(name, salary, dept),就相当于创建了(name, salary, dept)、(name, salary)和(name)三个索引,这被称为复合索引前导列特性,因此在创建复合索引时应该将最常用作查询条件的列放在最左边,然后依次递减。

#未使用索引
select * from employee where salary = 8800;
select * from employee where dept = '部门A';
select * from employee where salary = 8800 and dept = '部门A';

#使用索引
select * from employee where name = 'liufeng';
select * from employee where name = 'liufeng' and salary = 8800;
select * from employee where name = 'liufeng' and salary = 8800 and dept = '部门A';

5.覆盖索引
覆盖索引又称之为索引覆盖,即select的数据列只从索引中就能得到,不必读取数据行,也就是只需扫描索引就可以得到查询结果。当一个查询使用了覆盖索引,在查询分析器explain的extra列可以看到“Using index” 。

使用覆盖索引,只需要从索引中就能检索到需要的数据,而不要再扫描数据表。
索引的体量往往要比数据表小很多,因此只读取索引,速度会比较快,也会极大减少数据访问量。
MySQL的查询优化器会在执行查询前判断,是否有一个索引可以覆盖所有的查询列。
并非所有类型的索引都可以作为覆盖索引,覆盖索引必须要存储索引列的值。像哈希索引、空间索引、全文索引等并不会真正存储索引列的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值