Mysql (一)索引简介

目录

1.1 索引是什么

1.2 索引的优点

1.3 索引的缺点

1.4 哪些情况适合创建索引

1.5 哪些情况不适合创建索引

1.6索引主要有哪几种分类?


1.1 索引是什么

MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构

索引的本质:索引是数据结构。你可以简单理解为“排好序的快速查找数据结构”,满足特定查找算法。 这些数据结构以某种方式指向数据, 这样就可以在这些数据结构的基础上实现 高级查找算法 。

自己的理解:把数据比作成一本书,索引就是书的目录。

1.2 索引的优点

(1) 提高数据检索效率,降低数据库的IO成本。

(2) 在使用分组和排序子句进行数据查询时,可以显著 减少查询中分组和排序的时 间 ,降低了CPU的消耗。

1.3 索引的缺点

(1) 创建索引和维护索引要耗费时间 ,并且随着数据量的增加,所耗费的时间也会增加。

(2) 索引需要占用磁盘空间,,除了数据表占数据空间之 外,每一个索引还要占一定的物理空间, 存储在磁盘上 ,如果有大量的索引,索引文件就可能比数据文 件更快达到最大文件尺寸。

(3)  虽然索引大大提高了查询速度,同时却会 降低更新表的速度 。当对表 中的数据进行增加、删除和修改的时候,索引也要动态地维护,这样就降低了数据的维护速度。

1.4 哪些情况适合创建索引

(1) 字段的数值有唯一性的限制

(2) 频繁作为 WHERE 查询条件的字段

(3) 经常 GROUP BY 和 ORDER BY 的列

(4) UPDATE、DELETE 的 WHERE 条件列

对数据按照某个条件进行查询后再进行 UPDATE 或 DELETE 的操作,如果对 WHERE 字段创建了索引,就 能大幅提升效率。原理是因为我们需要先根据 WHERE 条件列检索出来这条记录,然后再对它进行更新或 删除。如果进行更新的时候,更新的字段是非索引字段,提升的效率会更明显,这是因为非索引字段更 新不需要对索引进行维护。

(5) DISTINCT 字段需要创建索引

1.5 哪些情况不适合创建索引

(1) 在where中使用不到的字段,不要设置索引

(2) 数据量小的表最好不要使用索引

(3) 有大量重复数据的列上不要建立索引

(4) 避免对经常更新的表创建过多的索引

(5) 不建议用无序的值作为索引

1.6索引主要有哪几种分类?

MySQL主要的几种索引类型:1.普通索引 2.唯一索引 3.主键索引 4.组合索引 5.全文索引。

  1. 普通索引: 是最基本的索引,它没有任何限制
  2. 唯一索引: 索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一
  3. 主键索引: 是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。
  4. 组合索引: 一个索引包含多个列,实际开发中推荐使用组合索引。
  5. 全文索引: 全文搜索的索引。FULLTEXT 用于搜索很长一篇文章的时候,效果最好。只能用于InnoDB或MyISAM表,只能为CHAR、VARCHAR、TEXT列创建.

主键索引和唯一索引的区别

主键必唯一,但是唯一索引不一定是主键;

一张表上只能有一个主键,但是可以有一个或多个唯一索引。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值