首页 > 数据库 >数据库索引的简单分类

数据库索引的简单分类

时间:2024-07-30 09:52:49浏览次数:16  
标签:存储 查询 数据库 分类 主键 索引 唯一 聚集

数据库的索引可以简单的分为四类:

  • 主键索引。针对表的主键所创建的索引,这种索引是默认自动创建的,而且只能有一个。

  • 唯一索引。避免表中某列的值重复,可以有多个唯一索引,在为某字段限定唯一约束时,会自动创建一个唯一索引。

  • 常规索引。一般的用于快速定位检索数据的索引,可以有多个。

  • 全文索引。查找的是文本中的关键词,用FULLTEXT关键字指定。

当然,上面的几类索引并不都是经常使用的。

在MySQL的InnoDB存储引擎中,根据索引的存储形式,又可以分为2类:

  • 聚集索引。将数据和索引存储放到一起,索引结构的叶子节点保存行数据,因此聚集索引有且仅有一个。

  • 二级索引。这种索引不与数据存储在一起,索引结构的叶子节点关联的是对应行数据的主键。

默认的情况下,主键索引就是聚集索引。实际上,存在没有主键的情况,聚集索引的选取规则如下:

  1. 有主键索引,则选择主键索引作为聚集索引。

  2. 没有主键索引,使用第一个唯一索引作为聚集索引。

  3. 如果没有主键索引或合适的唯一索引,InnoDB生成一个隐藏的rowid作为聚集索引。

通过这个规则保证聚集索引一定存在且唯一。

在根据二级索引对应的列进行查询时,不能直接通过主键上的聚集索引查询,需要首先通过字段对应的二级索引查找到对应行的主键id,再根据id回到聚集索引上查询到正确的行数据,因此需要进行两次索引查询(回表查询)。

如果二级索引与聚集索引一样,都直接把行数据存储到叶子节点上,数据会存储多份,造成空间的膨胀浪费。

标签:存储,查询,数据库,分类,主键,索引,唯一,聚集
From: https://www.cnblogs.com/louistang0524/p/18331589

相关文章

  • 数据库索引的使用
    对SQL语句进行性能分析对SQL语句进行性能分析的目的是对性能较差的语句进行优化。第一,SQL执行频率。我们需要弄清楚哪类语句性能较差、执行频次更高。主要优化的是查询select语句,如果表主要执行的语句是插入语句,实际上是没有必要对索引进行优化的。MySQL的客户端可以通过show[s......
  • 5、主板品牌分类介绍(华硕) - 计算机硬件品牌系列文章
    华硕电脑股份有限公司是一家总部位于中国台湾的国际品牌公司,‌成立于1990年4月2日。‌华硕以其卓越的产品质量和创新技术,‌成为全球最大的主板制造商之一,‌同时也是显卡、‌桌上电脑、‌通讯产品、‌光驱等产品的领导厂商。‌华硕的品牌名“ASUS”的灵感来自希腊神话的天马Peg......
  • 只讲干货!!数据库的裤腰带!!今天拿下:MySQL中的约束!!
    MySQL中的约束约束概述        数据库约束是对表中的数据进行进一步的限制,保证数据的正确性、有效性和完整性主键约束(PrimaryKey)PK        主键约束是使用最频繁的约束。在设计数据表时,一般情况下,都会要求表中设置一个主键。        ......
  • 昇思25天学习打卡营第19天|ResNet50 图像分类案例:数据集、训练与预测可视化
    目录环境配置数据集加载数据集可视化BuildingBlockBottleneck构建ResNet50网络模型训练与评估可视化模型预测环境配置        首先指出实验环境预装的mindspore版本以及更换版本的方法。然后,它卸载了已安装的mindspore并重新安装指定的2.3.0rc1版......
  • pandas read_sql 导致值错误:“年份 -10100 超出范围”由数据库中的日期损坏引起
    我正在运行一个脚本将数据从oracle迁移到postgres。运行以下命令时df=pd.read_sql(query,oracle_conn,)会导致错误ValueError:year-10100isoutofrange对于跨越数千的某些行,有些日期已损坏并且年份数字很大。例如,下面是损坏的日期,而下一......
  • ctype.h库中的分类函数
    /*ctype.h库中的分类函数*/#include<stdio.h>#include<ctype.h>intget_char(char*buff){charch;inti=0;while((ch=getchar())!='\n'){buff[i++]=ch;}returni;}voidprintf_ctype(charch){if(is......
  • Oracle 数据库配置文件与资源控制
    数据库资源控制与配置文件通过创建和分配配置文件,可以控制数据库用户的资源消耗,包括CPU、内存、磁盘I/O等。这些配置文件中的参数可以限制用户每个会话或每次调用使用的资源量。示例有一个数据库用户user1,其工作负载较大,经常占用大量资源。可以为该用户创建一个配置......
  • SmartSQL:一款方便、快捷的数据库文档查询、生成工具
    SmartSQL⚡一款方便、快捷的数据库文档查询、生成工具致力于成为帮助企业快速实现数字化转型的元数据管理工具......
  • SQLServer 事务复制在发布端(publication)和订阅端(subscription)对应的数据库还原之后复
     书接上文,在一个正常的事务复制环境中,如果发生了数据库还原,事务复制会不会出问题,出问题之后又如何恢复,如果在不删除订阅发布重建的情况下,如何在现有基础上修复事务复制的异常,这个问题可以分为两部分看:1,如果publisher数据库发生了还原操作,事务复制会出现什么异常,该如何恢复?2,如......
  • Navicat Premium(数据库管理) v17 授权版
    Navicat17全新升级,软件增强了数据库管理和数据分析的功能体验。其中包括模型设计与同步、数据字典、数据分析(dataprofiling)、用户体验、查询优化、BI功能集成MongoDB/Snowflake、专注模式、Redis哨兵模式与平台扩展LinuxARM等。此次升级让用户在数据库的创建、管理、......