首页 > 数据库 >初识数据库索引结构

初识数据库索引结构

时间:2024-07-30 09:53:19浏览次数:9  
标签:链表 数据库 查询 叶子 索引 初识 二叉树 节点

建立索引的优点在于:能够提高某列数据的检索效率,不需要进行顺序扫描。同时,缺点在于:索引结构需要单独维护,占据磁盘/内存空间,而且降低了增删改的效率。

索引结构可以使用什么数据结构来实现?

  1. 二叉树。有序,但是存在缺点:顺序插入时会退化成单向链表,查询性能大大降低,数据量大时,树会很深,检索速度变慢。

  2. 红黑树。一种自平衡的二叉树,因此解决退化成链表的问题,但是其二叉树的本质仍然存在,数据量很大时树的深度仍然很大。

由此引出B树这种数据结构。

上图是一个最大度数为5的B树,每个节点最多存储4个key和5个指针。5个指针分别指向5个子节点。不管是非叶子节点还是叶子节点,key值都对应存储其数据entry。B树的插入和分裂过程需要重点理解。

B+树是B树的变种。

上图以一个最大度数为4的B+树为例。与B树不同的是,B+树中,所有元素都会出现在叶子节点中,叶子节点用于存放数据,而非叶子节点只是起到索引的作用。此外,B+树中,所有的叶子节点形成一个单向链表。

MySQL中,对普通的B+树结构进行改进。对叶子节点增加了一个指针变成双向链表,能够提高区间查询的性能。每个节点(非叶子节点和叶子节点)都存储在一个页中。

另一个常用的索引结构是hash索引结构。这种索引利用hash算法,特点在于:只能用于相等/不等比较,不能进行范围查询;无法利用索引进行排序操作;查询效率通常比B+树索引高,因为只需要进行hash值进行一次查询。

标签:链表,数据库,查询,叶子,索引,初识,二叉树,节点
From: https://www.cnblogs.com/louistang0524/p/18331587

相关文章

  • 数据库索引的简单分类
    数据库的索引可以简单的分为四类:主键索引。针对表的主键所创建的索引,这种索引是默认自动创建的,而且只能有一个。唯一索引。避免表中某列的值重复,可以有多个唯一索引,在为某字段限定唯一约束时,会自动创建一个唯一索引。常规索引。一般的用于快速定位检索数据的索引,可以有多......
  • 数据库索引的使用
    对SQL语句进行性能分析对SQL语句进行性能分析的目的是对性能较差的语句进行优化。第一,SQL执行频率。我们需要弄清楚哪类语句性能较差、执行频次更高。主要优化的是查询select语句,如果表主要执行的语句是插入语句,实际上是没有必要对索引进行优化的。MySQL的客户端可以通过show[s......
  • 初识Java多线程
    Java中如何创建新线程?第一种方式:继承Thread类写一个子类继承Thread重写run方法创建该类的对象,代表一个线程调用start方法启动线程,该线程会执行run方法这种方式的优点在于编码方式简单,但是该类已经继承了Thread类,不能继承其他类。注意:启动线程时一定调用start方法,而非ru......
  • 只讲干货!!数据库的裤腰带!!今天拿下:MySQL中的约束!!
    MySQL中的约束约束概述        数据库约束是对表中的数据进行进一步的限制,保证数据的正确性、有效性和完整性主键约束(PrimaryKey)PK        主键约束是使用最频繁的约束。在设计数据表时,一般情况下,都会要求表中设置一个主键。        ......
  • pandas read_sql 导致值错误:“年份 -10100 超出范围”由数据库中的日期损坏引起
    我正在运行一个脚本将数据从oracle迁移到postgres。运行以下命令时df=pd.read_sql(query,oracle_conn,)会导致错误ValueError:year-10100isoutofrange对于跨越数千的某些行,有些日期已损坏并且年份数字很大。例如,下面是损坏的日期,而下一......
  • Oracle 数据库配置文件与资源控制
    数据库资源控制与配置文件通过创建和分配配置文件,可以控制数据库用户的资源消耗,包括CPU、内存、磁盘I/O等。这些配置文件中的参数可以限制用户每个会话或每次调用使用的资源量。示例有一个数据库用户user1,其工作负载较大,经常占用大量资源。可以为该用户创建一个配置......
  • SmartSQL:一款方便、快捷的数据库文档查询、生成工具
    SmartSQL⚡一款方便、快捷的数据库文档查询、生成工具致力于成为帮助企业快速实现数字化转型的元数据管理工具......
  • SQLServer 事务复制在发布端(publication)和订阅端(subscription)对应的数据库还原之后复
     书接上文,在一个正常的事务复制环境中,如果发生了数据库还原,事务复制会不会出问题,出问题之后又如何恢复,如果在不删除订阅发布重建的情况下,如何在现有基础上修复事务复制的异常,这个问题可以分为两部分看:1,如果publisher数据库发生了还原操作,事务复制会出现什么异常,该如何恢复?2,如......
  • Navicat Premium(数据库管理) v17 授权版
    Navicat17全新升级,软件增强了数据库管理和数据分析的功能体验。其中包括模型设计与同步、数据字典、数据分析(dataprofiling)、用户体验、查询优化、BI功能集成MongoDB/Snowflake、专注模式、Redis哨兵模式与平台扩展LinuxARM等。此次升级让用户在数据库的创建、管理、......
  • MySQL数据库基础操作与概念详解(三)
    DML和DQL语句1.新增–INSERTINTO表名(字段名,字段名,…字段名)values/value(值,值,…值)–日期使用字符串的形式进行书写日期格式(yyyy-MM-ddHH-dd)1.全字段的输入(1)方式一INSERTINTOstudent(sid,sname,birthday,ssex,classid)VALUES(9,‘张三’,‘2002-9-23’,‘......