活动介绍

MySQL的索引.pptx

preview
需积分: 0 6 下载量 78 浏览量 更新于2021-10-10 收藏 670KB PPTX 举报
MySQL索引 MySQL索引是关系型数据库中的一种存储结构,通过缩小表中需要查询的记录数来加快搜索速度。索引可以看作图书的目录,可以快速找到所需的内容。 索引的应用场景: 假设我们有一张数据表User,该表有三个字段(列),分别是name、age和address。假设表User有上万行数据,现在需要从这个表中查找出所有名字是‘ZhangSan’的信息,可以快速的写出SQL语句:select name,age,address from User where name='ZhangSan’。但是,在查询过程中,数据库不得不在User表中的每一行查找并确定名字(name)是否为‘ZhangSan’。由于我们想要得到每一个名字为ZhangSan的信息,在查询到第一个符合条件的行后,不能停止查询,因为可能还有其他符合条件的行,所以必须一行一行的查找直到最后一行。这就意味数据库不得不检查上万行数据才能找到所有名字为ZhangSan的User信息。这是一个典型的全表扫描,效率太慢,可能会极大程度地影响用户体验。 索引的引入: 在关系型数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。 索引的分类: 1. 普通索引:是最基本的索引,没有任何限制。 2. 唯一索引:与前面的普通索引类似,不同的是:索引列的值必须唯一,但允许有空值。 3. 主键索引:是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。 4. 组合索引:指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。 5. 全文索引:主要用来查找文本中的关键字,而不是直接与索引中的值相比较。 索引所使用的数据结构: 在计算机数据结构体系中,为了加速查找的速度,常见的数据结构有两种: * Hash哈希结构:例如Java中的HashMap,这种数据组织结构可以让查询/插入/修改/删除的平均时间复杂度都为O(1)。 * Tree 树结构:这种数据组织结构可以让查询/插入/修改/删除的平均时间复杂度都为O(log(n))。 MySQL的开发者既使用Hash类型做为索引,又使用了TREE作为索引,且TREE索引对Hash索引作了良好的补充。 B-TREE结构: B-Tree 是有二叉树结构演变而来,具有以下特性: * 不再是二叉搜索,而是N叉搜索,树的高度会降低,查询快。 * 叶子节点,非叶子节点,都可以存储数据,且可以存储多个数据。 * 通过中序遍历,可以访问树上所有节点。 B+TREE结构: B+TREE改进点及优势所在: * 仍然是N叉树,层级小,非叶子节点不再存储数据,数据只存储在同一层的叶子节点上。 * 叶子之间,增加了链表,获取所有节点,不再需要中序遍历,使用链表的next节点就可以快速访问到。 索引不要乱使用: * 虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行insert、update 和delete,因为更新表时,不仅要保持索引的一致性,还要更新索引本身。 索引是关系型数据库中的一种重要结构,可以大大提高查询速度,但需要合理使用索引,避免滥用索引。
身份认证 购VIP最低享 7 折!
30元优惠券