【数据库】索引

news2024/10/6 6:05:34

MySQL索引

1、B+树索引

是InnoDB引擎默认的索引

  • B+树结构
    B+树是平衡树,即所有叶子节点都在同一层的多叉树
    每个节点中key和指针交替排列,两个key之间的指针指向的是大于等于左边key且小于等于右边key的节点
    叶子节点顺次连接,所以沿着B+树的叶子节点走能得到按key排序后的数据
  • 操作
    查找:先在根节点二分查找,找到key所在的指针,递归地去相应的节点继续查找
    增删节点:为了维护树的平衡性,需要进行节点的分裂合并,旋转等操作
  • 与B树的对比
    1)B树中间节点也存数据,没有冗余的索引,而B+树只在叶子节点存数据,key值不止会出现在一个地方,因为节点不存数据,比较小,所以磁盘读写代价更低
    2)B树搜索路径是根到中间节点,B+树是根到叶子节点,所以搜索过程比较稳定
  • 与红黑树的对比
    1)B+树的树高更矮,因为红黑树是二叉树
    2)B+树更适合磁盘读取,因为树高低,磁盘寻道次数少
    3)B+树叶子节点顺序存储,磁盘预读的特性更适合

2、哈希索引

InnoDB引擎的索引
有O(1)的查询速度,但是失去了有序性

  • 不支持排序和分组
  • 只支持精确查找,无法用于范围查找和部分查找

InnoDB 存储引擎有一个特殊的功能叫“自适应哈希索引”,当某个索引值被使用的非常频繁时,会在 B+Tree 索引之上再创建一个哈希索引,这样就让 B+Tree 索引具有哈希索引的一些优点,比如快速的哈希查找

3、全文索引

MyISAM引擎的索引,InnoDB也支持

  • 用于查找关键词,使用倒排索引实现

4、空间数据索引

MyISAM 引擎支持空间数据索引(R-Tree)

  • 用于地理数据存储,空间数据索引会从所有维度来索引数据,可以有效地使用任意维度来进行组合查询
  • 必须使用 GIS 相关的函数来维护数据

主索引和辅助索引

主索引:也叫聚簇索引,指的是叶子节点直接存数据本体的索引
在这里插入图片描述
辅助索引:叶子节点存的是主索引,先找主索引,找到主索引后再到主索引上找数据本体,这个过程叫回表
在这里插入图片描述

主索引和辅助索引

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/37467.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ADAU1860调试心得(5)ADC-DAC直通程序

硬件、驱动全部都搞好了,我觉得调试记录的话,就从最简单的开始,先做一个直通的例程。先把这个板子弄出声来,会用sigmastudio,会做ADAU开发的兄弟们应该很熟悉,同样的配方,同样的味道&#xff0c…

Nginx--单向链表分析

1.基本数据结构 1.1结点 struct ngx_list_part_s {void *elts;ngx_uint_t nelts;ngx_list_part_t *next; };结构成员分析 void* elts :数组元素指针 ngx_uint_t :数组里面的元素数量 ngx_list_part_t*…

英文Assignment写作引用格式怎么分析?

英文Assignment写作中我们常常使用不同作家和研究员的观点,论证来支持自己的想法。引用他们原文的时候我们必须使用具体引用格式。不同学校对引用格式都有不同的要求。事实上,有很多不同的引用格式,大约有超过200种引用格式。例如我们耳熟能详…

一文读懂!异常检测全攻略!从统计方法到机器学习

💡 作者:韩信子ShowMeAI 📘 数据分析实战系列:https://www.showmeai.tech/tutorials/40 📘 机器学习实战系列:https://www.showmeai.tech/tutorials/41 📘 本文地址:https://showmea…

Day12--优化分类页面的效果

1.提出一个问题,当你点击一级分类的时候,在三级分类中滚动自己的进度条。切换到之后的另一级分类再看看其三级分类时不是再最顶部。 我的操作: 1》在cate.vue中: *************************************************************…

大数据必看:大厂十年架构师职业生涯实战经验总结,《大规模分布式系统架构与设计实战》

前言 这段时间一直在读一本书《大规模分布式系统架构与设计实战》,这是淘宝千峰老师的作品,是从程序员到首席架构师十多年职业生涯的实战经验总结。 这本书其实是围绕着Fourinone在讲分布式,并非分布式理论,所以只适用于想研究F…

【allegro 17.4软件操作保姆级教程五】布线前准备之过孔、差分对、布线集合添加

目录 1.1 过孔添加与设置 1.2 添加差分对 1.3 添加布线集合 1.1 过孔添加与设置 布线换层时需要由过孔贯穿,而软件本身是没有过孔可以直接调用的,所以需要手动添加和设置。一般我们使用的都是通孔,盲孔和埋孔成本高,一般不使用。…

PG::Photography

nmap -Pn -p- -T4 --min-rate1000 192.168.171.76 nmap -Pn -p 22,80,139,445,8000 -sCV 192.168.171.76 查看8000端口的内容 CMS的关键字“Built with Koken” 存在的漏洞需要认证 https://www.exploit-db.com/exploits/48706 在端口枚举时,该靶机有smb服务&am…

MyBatis-Plus之DML编程控制

1. id生成策略控制 前面我们在新增的时候留了一个问题,就是新增成功后,主键ID是一个很长串的内容,我们更想要的是按照数据库表字段进行自增长,在解决这个问题之前,我们先来分析下ID该如何选择: 不同的表应…

vscode一键生成佛祖保佑永无bug

工欲善其事,必先利其器 今天给大家分享一个vscode注释插件-koroFileHeader,可以快速给我们的文件和函数添加注释,快来看看吧 安装 打开vscode拓展,搜索“koroFileHeader”,安装,重新启动一下 使用 快捷键 生…

【配置nacos】使用application.yml配置文件来配置spring-cloud-starter-alibaba-nacos-config

1.首先修改pom.xml文件&#xff0c;引入spring-cloud-starter-alibaba-nacos-config依赖 <!--Nacos配置管理--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><…

Java#26(常见算法: 排序算法)

目录 一.冒泡排序 相邻元素之间两两比较,大的放右边,小的放左边 二.选择排序 从0索引开始,拿着每一个索引上的元素和后面的元素依次标胶,小的放在前面,大的放在后面 三.插入排序 假如0到n索引的数据遵循从小到大排序,就可以将0-n看做有序的,则n1到最大索引都是无序的 四…

【日常系列】LeetCode《19·BFS 和 DFS》

数据规模->时间复杂度 <10^4 &#x1f62e;(n^2) <10^7:o(nlogn) <10^8:o(n) 10^8<:o(logn),o(1) 内容 lc 589 &#xff1a;N 叉树的前序遍历 https://leetcode.cn/problems/n-ary-tree-preorder-traversal/ 提示&#xff1a; 节点总数在范围 [0, 104]内 0 &l…

最简单的git图解(git rebase)

今天我们来讲解下git rebase命令&#xff0c;以及git rebase命令与git merge命令的区别。 git rebase图解&#xff1a; 假设我们目前有master、demo两个分支&#xff0c;而且demo分支上从master分支上切出来的&#xff1a; 从上图中可以看到&#xff0c;我们从C2提交点切出来了…

图像边缘检测与图像分割常用算法研究分析-含Matlab代码

⭕⭕ 目 录 ⭕⭕✳️ 引言✳️ 一、经典边缘检测算子✳️ 1.1 Roberts 算子与实验验证✳️ 1.2 Sobel 算子原理与实验验证✳️ 1.3 Prewitt 算子与实验验证✳️ 1.4 Log 算子与实验验证✳️ 1.5 Canny 算子与实验验证✳️ 二、图像分割原理及其实验验证✳️ 2.1 基于阈值处理的…

用 AWTK 和 AWPLC 快速开发嵌入式应用程序 (5)- 自定义功能块(下)

AWPLC 目前还处于开发阶段的早期&#xff0c;写这个系列文章的目的&#xff0c;除了用来验证目前所做的工作外&#xff0c;还希望得到大家的指点和反馈。如果您有任何疑问和建议&#xff0c;请在评论区留言。 1. 背景 AWTK 全称 Toolkit AnyWhere&#xff0c;是 ZLG 开发的开源…

logback 集成 logstash

logback 集成 logstash 相关环境参考&#xff1a; Java 输出 JSON 日志 1. 添加依赖 <dependency><groupId>net.logstash.logback</groupId><artifactId>logstash-logback-encoder</artifactId><version>7.2</version> </depend…

TextRank算法实践

TextRank算法实践 PageRank算法思想 TextRank算法的思想主要源于PageRank算法&#xff0c;PageRank算法主要用于给互联网网页排序&#xff0c;根据网页之间的跳转来构造一个初始权重矩阵&#xff08;转移矩阵&#xff09;&#xff0c;默认每个网页质量都是1 使用一个向量v&…

基于多目标粒子群优化算法的冷热电联供型综合能源系统运行优化(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

k8s使用ceph-csi插件的cephfs方式持久化存储

环境说明 操作系统&#xff1a;centos-7.9 x86_64&#xff0c;内核版本3.10.0&#xff0c;所有组件安装均在该操作系统 ceph版本&#xff1a;ceph version 14.2.22 nautilus (stable) kubernetes版本&#xff1a;v1.17.4 ceph-csi版本&#xff1a;v3.0.0 docker版本&#xff1…