聚簇索引和非聚簇索引

磁盘文件

Innodb存储引擎在磁盘上的文件是以.idb结尾的文件,它存放的是表索引+数据。这其实就是聚簇索引。

而Myisam存储引擎在磁盘上的文件是以.MYD结尾的表数据 和.MYI结尾的表索引,这其实就是非聚簇索引。所以区别之一是是否把索引和数据放在了一起。

叶子节点

聚簇索引的叶子节点存放的是真实的数据。非叶子节点是目录(一般是主键,如果没有主键,就用唯一键,没有唯一键,就会默认生成一个隐藏的键)。

非聚簇索引的叶子节点存放的是索引值(目录)以及存放真实数据的地址。拿到地址后,就去.MYD的文件中查找数据。

个数

一张表只能有一个聚簇索引,因为聚簇索引决定了数据行的物理存储顺序与索引的键值顺序相同,也就是说,索引的键值决定了数据在磁盘上的物理排列方式。因此,每张表只能有一个聚簇索引,是为了保证数据行只有一种物理存储顺序,避免了混乱和不一致性。

一张表可以有多个非聚簇索引,因为非聚簇索引与数据行的物理存储顺序无关。非聚簇索引只是单独地建立了索引结构,而数据行在磁盘上的存储方式并不受索引的影响。因此,多个非聚簇索引可以独立地建立在数据表上,互不影响。每个索引都可以针对不同的查询条件进行优化。这样可以提高数据库的灵活性和查询性能,满足不同的业务需求。

聚簇索引的特点

因为是有序的,所以适合应用在范围查询的场景中。

维护索引的成本较大。因为要保证有序。所以在插入新节点导致需要分页的时候,会影响效率。

非聚簇索引的特点 

非聚簇索引只存储索引键值和对应的行地址,不存储实际的数据行。因此,相比于聚簇索引,非聚簇索引占用的存储空间较小,可以节省存储资源。 

使用非聚簇索引可以减少磁盘I/O操作。由于索引存储的是索引键值和对应的行地址,而不是实际的数据行,因此可以减少从磁盘读取数据的次数,降低了I/O开销。

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

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

相关文章

MYSQL——索引概念索引结构

索引 索引是帮助数据库高效获取数据的排好序的数据结构。 有无索引时,查询的区别 主要区别在于查询速度和系统资源的消耗。 查询速度: 在没有索引的情况下,数据库需要对表中的所有记录进行扫描,以找到符合查询条件的记录&#…

专升本-物联网

物联网(IOT,Internet of things) 体系结构: 感知层(感知执行层) 网络层 应用层 基本特征: 全面感知 可靠传输 智能处理 作用: 信息采集、转换、收集 信息传递和处理 数据…

Doris实践——票务平台的实时数仓建设

目录 前言 一、引入 Doris原因 二、基于Doris搭建数据平台 2.1 构建实时数仓 2.2 Flink CDC全库同步 三、基于Doris进行OLAP报表开发 四、未来规划 原文大佬介绍的这篇票务平台的实时数仓建设有借鉴意义,现摘抄下来用作沉淀学习。如有侵权,请告知…

如何在Mac系统上编写html代码,Mac系统上html环境配置

目录 前言1.代码编辑器:VScode1.1下载与安装1.2简单的工具配置2.测试用浏览器:Chroem2.1下载与安装3.JavaScript运行环境:node.js3.1下载与安装4.git工具:sourceTree+gitee4.1下载与安装结尾前言 这是一个面向新手的MAC系统Html编写的环境的说明。 相关搜索内容已经被垃圾…

【华为OD机试C++】字符串分割

《最新华为OD机试题目带答案解析》:最新华为OD机试题目带答案解析,语言包括C、C++、Python、Java、JavaScript等。订阅专栏,获取专栏内所有文章阅读权限,持续同步更新! 文章目录 描述输入描述输出描述示例代码描述 •输入一个字符串,请按长度为8拆分每个输入字符串并进行…

web前端面试题----->VUE

Vue的数据双向绑定是通过Vue的响应式系统实现的。具体原理: 1. Vue会在初始化时对数据对象进行遍历,使用Object.defineProperty方法将每个属性转化为getter、setter。这样在访问或修改数据时,Vue能够监听到数据的变化。 2. 当数据发生变化时…

Java学习31-Java 多线程Thread 线程的创建

多线程的概念: 用户想要一边听歌,一边QQ聊天,一边游戏。要求能并发执行。 program程序: 有特殊功能的一组代码process进程: 正在执行中的program,或者程序program的一次执行过程thread线程:程…

CSS实现元素边框渐变动画

前言: 边框流动动画是一种非常常见的效果,能够让网页看起来更加生动有趣。通过使用 CSS3,我们可以轻松地实现这种动画效果。本文将介绍如何使用 CSS3 实现边框流动效果,下面一起来看看吧。 示例图:边框是动画持续变化的…

前端简历:大学还没毕业,就写2年工作经验,上的啥大学呢?

我看过很多前端简历,不知道是不是被所谓简历专家和面试专家给拐带的,还没毕业就敢写2年工作经验,如果属实,大学上了个啥? 简历每天都能收到几十上百封,对于初级人才招聘,基本上看以下几点。 1、…

boost::asio 调整 io_uring 队列大小

若无必要默认情况下,适用 boost::asio 设定得默认值即可,虽然它浪费了很大得内存,但 boost::asio 设定得默认值,在绝大多数得场景上都是够用得。 但在调整 io_uring 之前,必须正确配置以令 boost::asio 启用 io_uring …

CIM搭建实现发送消息的效果

目录 背景过程1、下载代码2、进行配置3、直接启动项目4、打开管理界面5、启动web客户端实例项目6、发送消息 项目使用总结 背景 公司项目有许多需要发送即时消息的场景,之前一直采用的是传统的websocket连接,它会存在掉线严重,不可重连&…

史上最强47种行业主题小程序模板供你玩耍!赶紧收藏起来!

目录 1.KTV​编辑 2.瓷砖 3.电商女装 4.电商 5.电子产品 6.多商圈 7.发现 8.房产 9.房产建筑 10.服装 11.个人展示 12.公司主题 13.果蔬 14花店 15化妆品 16婚庆 17机械 18家居 19家具 20家政 21教育 22金融 23金属配件 24酒店 25快递 26留守儿童 2…

深入理解数据结构(3):栈和队列详解

文章主题:顺序表和链表详解🌱所属专栏:深入理解数据结构📘作者简介:更新有关深入理解数据结构知识的博主一枚,记录分享自己对数据结构的深入解读。😄个人主页:[₽]的个人主页&#x…

瑞吉外卖实战学习--7、员工信息分页查询

员工信息分页查询 前言1、配置公共分页组件2、创建接口并查看接收的参数3、使用分页构造器并添加查询条件和排序条件4、测试结果 前言 1、配置公共分页组件 package com.example.ruiji_demo.config;import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;…

sharemore少数派提示词或许需要工程,但提问一定需要智慧

Matrix 首页推荐 Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。 文章代表作者个人观点,少数派仅对标题和排版略作…

代码随想录算法训练营第二十五天| 216.组合总和III,17.电话号码的字母组合

题目与题解 216.组合总和III 题目链接:216.组合总和III 代码随想录题解:216.组合总和III 视频讲解:和组合问题有啥区别?回溯算法如何剪枝?| LeetCode:216.组合总和III_哔哩哔哩_bilibili 解题思路&#xf…

数据结构和算法:图

图 图(graph)是一种非线性数据结构,由顶点(vertex)和边(edge)组成。可以将图 𝐺 抽象地表示为一组顶点 𝑉 和一组边 𝐸 的集合。 如果将顶点看作节点&#…

Mongo低版本 count操作进行$in时走了覆盖索引却仍然回表

文章目录 概要一、原因二、解决方法 概要 由于历史原因,一些老项目还在用MongoDB V3.2版本,集群为分片模式,一个客户表数量有15亿左右,昨天监控突然报很多慢查询,如下: db.info.count({domain_id:888,sta…

梦中梦中梦?(梦中梦?)

梦中梦中梦?(梦中梦?) 早上7.40左右起床上厕所(大的)开始自律的一天,上完了刷了会手机,决定再睡一会。在起和睡之间犹豫了几次还是决定睡一会,就开始了这辈子头一次梦中…

算法打卡day22

今日任务: 1)216.组合总和III 2)17.电话号码的字母组合 216.组合总和III 题目链接:216. 组合总和 III - 力扣(LeetCode) 找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数&#xf…