创建站点如何做网站,帮卖货平台,jpress 和wordpress,WordPress显示不出广告目录
1. 数据库索引
1.1 索引的概念
1.2 索引的特点
1.3 索引查询对比普通的查询
1.4 索引的操作 1.5 索引的原理 1.6 B树
1.7 B树
1.8 B树的优点 1. 数据库索引
1.1 索引的概念
数据库的索引是一种特殊的数据结构#xff0c;里面包含着数据表中所有记录的引用…目录
1. 数据库索引
1.1 索引的概念
1.2 索引的特点
1.3 索引查询对比普通的查询
1.4 索引的操作 1.5 索引的原理 1.6 B树
1.7 B树
1.8 B树的优点 1. 数据库索引
1.1 索引的概念
数据库的索引是一种特殊的数据结构里面包含着数据表中所有记录的引用可以对表中一列或者多列创建索引并指定类型
可以将数据库的索引想象为书的目录可以帮助数据库系统快速定位和访问表中的特定数据而不必扫描整个表。 1.2 索引的特点
通过索引可以直接定位数据不需要逐个扫描数据表中的记录可以提高数据库的查询性能数据表在进行插入/更新/删除操作时因为要更新索引导致效率降低由于索引需要单独存储需要引入额外的存储开销 一般建议高频的查询建立索引如根据用户名—密码在实际的工作中查询使用的频率远远高于数据的增加/删除/修改 1.3 索引查询对比普通的查询
普通select查询
需要遍历整个表将遍历的当前行带入条件中看条件是否成立如果条件成立则将这一行保留不成立则会跳过
索引查询
不需要遍历整个表只需要读取索引页和少量的数据页并通过索引数据结构B树快速定位数据 索引属于针对查询操作进行的优化手段可以通过索引来加快查询的速度由于数据存储在硬盘中如果每次插叙都访问硬盘数据从硬盘中加载进入内存进行对比这一系列操作开销虽然不大但是数据量如果非常多的话则会导致开销很大所以引入索引是很有必要的 1.4 索引的操作
1查看索引
show index from 表名;2创建索引
create index 索引名 on 表名(字段名);3删除索引
drop index 索引名 on 表名;注意
一个索引是针对一个列来指定的只有这一列进行查询的时候查询速度才会被优化一个表中可以存在多个索引创建索引一般在创建表的时候就需要规定好索引如果现有的数据很多整个时候如果增加一个索引很有可能会造成数据库的崩溃 1.5 索引的原理 索引的实现肯定是依靠数据结构但是我们平常使用的数据结构并不适合顺序表适合通过下表访问和尾插链表适合中间插入和删除不适合查询栈/队列/堆这些更不适合二叉搜索树: 由于平衡性问题查询效率会降低不稳定硬盘数据的存储效率低查询效率低哈希表只适合点到点的精准查询不能进行范围查询和模糊查询红黑树虽然可以精准查询和模糊查询但是由于树的高度较高查询访问的IO访问次数会变多 由于常见的这些数据结构都不适合数据库操作故引入了新的数据结构—B树N叉搜索树 1.6 B树 在了解B树之前先了解B树 类似于这样的结构就是B树
节点内部Key按顺序排列自动保持树的高度平衡所有叶子节点位于同一层每个节点可以有多个子节点每一个节点可以存在多个Key 但是也不是无限存储到达一定的规模会触发节点的分裂删除元素到达一定的数据也会触发合并一个节点上保存N个key值就可以划分出N1个区间每个区间都可以衍生出一系列的子树像这些节点都存储在硬盘的一块区域中一次读取节点意味着读取出多个Key再进行几次比较就可以快速找到自己想要的数值 1.7 B树 所有的数据都保存在叶子节点中除叶子结点外的节点不保存数据只是用来索引节点中最右边为最大值根节点中最右边为整个元素中的最大值无论增加或删除什么元素都需要保证根节点的最右边是最大元素每一个父节点元素都出现在子节点中是子节点最大或最小元素。 在进行查询的时候从根节点触发判定要查询的数据在节点的那个区间决定往哪里走叶子节点之间通过双链表进行连接方便数据集合之间按照范围进行查询也可以快速进行删除和增加等操作 1.8 B树的优点
相比于B树红黑树来说
N叉搜索树树的高度有限降低了IO访问次数由于叶子节点之间的链表结构方便增加和删除操作所有叶子节点之间属于有序链表方便范围查询。由于叶子节点存放数据查询开销非常的稳定稳定性好