每个InnoDB表都有一个特殊的索引,称为聚簇索引 ,用于存储行数据。通常,聚簇索引与主键同义 。为了从查询,插入和其他数据库操作中获得最佳性能,您必须了解如何InnoDB使用聚簇索引为每个表优化最常见的查找和DML操作。

在PRIMARY KEY表上定义a 时,InnoDB将其用作聚簇索引。为您创建的每个表定义一个主键。如果没有逻辑唯一且非空的列或列集,请添加一个新的 自动递增 列,其值将自动填充。

如果您没有PRIMARY KEY为表定义,MySQL会UNIQUE在所有键列所在的位置找到第一个索引,NOT NULL并将 InnoDB其用作聚集索引。

如果表没有索引PRIMARY KEY或没有合适的 UNIQUE索引,则InnoDB 内部生成一个隐藏的聚集索引GEN_CLUST_INDEX,该索引在包含行ID值的合成列上命名 。这些行由InnoDB分配给该表中各行的ID排序 。行ID是一个6字节的字段,随着插入新行而单调增加。因此,按行ID排序的行实际上在插入顺序上。

聚集索引如何加快查询速度

通过聚集索引访问行是快速的,因为索引搜索直接导致包含所有行数据的页面。如果表很大,则与使用不同于索引记录的页面存储行数据的存储组织相比,聚集索引体系结构通常可以节省磁盘I / O操作。

二级索引如何与聚簇索引相关

除聚集索引之外的所有索引都称为 辅助索引。在中InnoDB,辅助索引中的每个记录都包含该行的主键列以及为辅助索引指定的列。 InnoDB使用此主键值在聚集索引中搜索行。

如果主键较长,则辅助索引将使用更多空间,因此具有短主键是有利的。

mysql聚集索引和二级索引_mysql8 参考手册--聚集索引和二级索引相关推荐

  1. mysql复制状态是什么意思_mysql8 参考手册--复制从SQL线程状态

    以下列表显示了您可能在从属服务器SQL线程的State列中看到的最常见状态: Killing slave 线程正在处理一条STOP SLAVE 语句. Making temporary file (a ...

  2. mysql通过订单量排序_mysql8 参考手册--通过排序优化

    本节描述了MySQL何时可以使用索引满足ORDER BY子句,无法使用索引时使用的 filesort操作,以及有关优化程序的执行计划信息ORDER BY. 一个ORDER BY有和没有 LIMIT可能 ...

  3. mysql 查询执行计划_mysql8 参考手册--了解查询执行计划,使用EXPLAIN优化查询

    根据表,列,索引的详细信息以及WHERE子句中的条件,MySQL优化器考虑了许多技术来有效执行SQL查询中涉及的查找.无需读取所有行即可执行对巨大表的查询:可以执行涉及多个表的联接,而无需比较行的每个 ...

  4. mysql columns表_mysql8 参考手册-INFORMATION_SCHEMA COLUMNS表

    COLUMNS表提供有关表中列的信息.相关 ST_GEOMETRY_COLUMNS表提供有关存储空间数据的表列的信息. 该COLUMNS表包含以下列: TABLE_CATALOG 包含该列的表所属的目 ...

  5. 支持mysql8的客户端_mysql8 参考手册--mysql客户端帮助

    mysql客户端帮助 mysql>help search_string 如果为help命令提供参数,则mysql将其用作搜索字符串,以从< MySQL参考手册>中提供帮助内容.该命令 ...

  6. mysql 8 多线程_mysql8 参考手册--通用线程状态

    下表描述了State 与常规查询处理而非更专门的活动(如复制)相关联的线程值.其中许多仅用于发现服务器中的错误. After create 当线程在创建表的函数的末尾创建表(包括内部临时表)时,会发生 ...

  7. mysql 表空间修改_mysql8 参考手册--调整系统表空间

    系统表空间是更改缓冲区的存储区.如果在系统表空间中创建表,而不是在每个表文件或常规表空间中创建表,则它也可能包含表和索引数据.在以前的MySQL版本中,系统表空间包含InnoDB数据字典.在MySQL ...

  8. mysql添加枚举约束语句_mysql8 参考手册--MySQL如何处理约束

    MySQL使您既可以使用允许回滚的事务表,也可以使用不允许回滚的非事务表.因此,MySQL中的约束处理与其他DBMS中的约束处理有所不同.当您在非事务处理表中插入或更新了很多行时,如果发生错误,则无法 ...

  9. mysql 8 配置参数优化_mysql8 参考手册--配置非持久性优化器统计参数

    本节介绍如何配置非持久性优化器统计信息.当innodb_stats_persistent=OFF或使用创建或更改单个表时,Optimizer统计信息不会保留在磁盘 上 STATS_PERSISTENT ...

最新文章

  1. jQuery实现点击开关图片切换
  2. 为啥开发的文档能力是核心竞争力之一
  3. 中nextint函数_Kotlin中的作用域方法(Scope Function)
  4. 在Ubuntu 12.04安装和设置Samba实现网上邻居共享
  5. 内存管理单元MMU简介
  6. 64位 centos 服务器 编译安装 gcc-4.6.2 和 codeviz
  7. NoSQL数据库应用
  8. 七彩虹平板刷成android,七彩虹I803 Q1平板电脑刷机固件升级教程
  9. 如何获取公众号二维码
  10. Mask RCNN 实战(二)--像黑镜一样屏蔽图片和视频中的人和物体
  11. 多元有序logistic回归分析_多元Logistic_回归分析解析.ppt
  12. 学习强国十年磨剑最新分数及排名
  13. Git基础之(三)——时光穿梭机
  14. 平台搭建_记一次CTFd平台搭建
  15. ClassNames
  16. 安卓程序开发需要学习哪些语言
  17. [书籍翻译]12周撰写期刊文章 学术出版成功指南——第 2 周:开始您的文章
  18. 【Java】页面静态化
  19. 2022世界杯回忆录:我的青春我的歌
  20. CTF-攻防世界web新手入门篇

热门文章

  1. 产品经理必备知识之网页设计系列(一)-创建出色用户体验
  2. 深度学习核心技术精讲100篇(三)-层次自适应的多臂老虎机决策算法 ( HATCH )在滴滴中的应用
  3. Python的lambda匿名函数
  4. DELL服务器安装过程中的三种模式AHCI, ATA, RAID
  5. Hadoop学习之MapReduce(五)
  6. express ajax分页实例,element+express+mongoose实现分页查询
  7. linux下面子目录绑定域名的方法,.htaccess绑定子域名到子目录方法
  8. sql server修改索引名称_索引基本知识和索引优化
  9. QT如何实现对于字符串数学公式计算
  10. 连环清洁工之特殊任务--java资源如何关闭?