位置: 编程技术 - 正文

MySQL中主键索引与聚焦索引之概念的学习教程(mysql索引和主键)

编辑:rootadmin

推荐整理分享MySQL中主键索引与聚焦索引之概念的学习教程(mysql索引和主键),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql索引和主键,mysql主键索引数据结构,mysql 主索引,mysql中主键索引和唯一索引区别,mysql主键索引和聚集索引,mysql中主键索引和唯一索引区别,mysql创建主键索引的关键字使用,mysql中主键索引和唯一索引区别,内容如对您有帮助,希望把文章链接给更多的朋友!

主键索引

主键索引,简称主键,原文是PRIMARY KEY,由一个或多个列组成,用于唯一性标识数据表中的某一条记录。一个表可以没有主键,但最多只能有一个主键,并且主键值不能包含NULL。

在MySQL中,InnoDB数据表的主键设计我们通常遵循几个原则:

采用一个没有业务用途的自增属性列作为主键;主键字段值总是不更新,只有新增或者删除两种操作;不选择会动态更新的类型,比如当前时间戳等。这么做的好处有几点:

新增数据时,由于主键值是顺序增长的,innodb page发生分裂的概率降低了;可以参考以往的分享“[MySQL FAQ]系列 — 为什么InnoDB表要建议用自增列做主键”;业务数据有变更时,不修改主键值,物理存储位置发生变化的概率降低了,innodb page中产生碎片的概率也降低了。MyISAM表因为是堆组织表,主键类型设计方面就可以这么讲究了。

辅助索引,就是我们常规所指的索引,原文是SECONDARY KEY。辅助索引里还可以再分为唯一索引,非唯一索引。

唯一索引其实应该叫做唯一性约束,它的作用是避免一列或多列值存在重复,是一种约束性索引。

在MyISAM引擎中,唯一索引除了key值允许存在NULL外,其余的和主键索引没有本质性区别。也就是说,在MyISAM引擎中,不允许存在NULL值的唯一索引,本质上和主键索引是一回事。

而在InnoDB引擎中,主键索引和辅助索引的区别就很大了。主键索引会被选中作为聚集索引,而唯一索引和普通辅助索引间除了唯一性约束外,在存储上没本质区别。

从查询性能上来说,在MyISAM表中主键索引和不允许有NULL的唯一索引的查询性能是相当的,在InnoDB表通过唯一索引查询则需要多一次从辅助索引到主键索引的转换过程。InnoDB表基于普通索引的查找代价更高,因为每次检索到结果后,还需要至少再多检索一次才能确认是否还有更多符合条件的结果,主键索引和唯一索引就不需要这么做了。

经过测试,对万行数据的MyISAM做随机检索(整数类型),主键和唯一索引的效率基本一样,普通索引的检索效率则慢了%以上。换成InnoDB表的话,唯一索引比主键索引效率约慢9%,普通索引比主键索引约慢了%以上。

聚集索引在MySQL中,InnoDB引擎表是(聚集)索引组织表(clustered index organize table),而MyISAM引擎表则是堆组织表(heap organize table)。

也有人把聚集索引称为聚簇索引。

MySQL中主键索引与聚焦索引之概念的学习教程(mysql索引和主键)

当然了,聚集索引的概念不是MySQL里特有的,其他数据库系统也同样有。

简言之,聚集索引是一种索引组织形式,索引的键值逻辑顺序决定了表数据行的物理存储顺序,而非聚集索引则就是普通索引了,仅仅只是对数据列创建相应的索引,不影响整个表的物理存储顺序。

我们先来看看两种存储形式的不同之处:简单说,IOT表里数据物理存储顺序和主键索引的顺序一致,所以如果新增数据是离散的,会导致数据块趋于离散,而不是趋于顺序。而HOT表数据写入的顺序是按写入时间顺序存储的。IOT表相比HOT表的优势是:

范围查询效率更高;数据频繁更新(聚集索引本身不更新)时,更不容易产生碎片;特别适合有一小部分热点数据频繁读写的场景;通过主键访问数据时快速可达;IOT表的不足则有:

数据变化如果是离散为主的话,那么效率会比HOT表差;

HOT表的不足有:

索引回表读开销很大; 大部分数据读取时随机的,无法保证被顺序读取,开销大; 每张InnoDB表只能创建一个聚集索引,聚集索引可以由一列或多列组成。

上面说过,InnoDB是聚集索引组织表,它的聚集索引选择规则是这样的:

首先选择显式定义的主键索引做为聚集索引;如果没有,则选择第一个不允许NULL的唯一索引;还是没有的话,就采用InnoDB引擎内置的ROWID作为聚集索引;

可以看到,在这个索引结构的叶子节点中,节点key值是主键的值,而节点的value则存储其余列数据,以及额外的ROWID、rollback pointer、trx id等信息。

结合这个图,以及上面所述,我们可以知道:在InnoDB表中,其聚集索引相当于整张表,而整张表也是聚集索引。主键必然是聚集索引,而聚集索引则未必是主键。

MyISAM是堆组织表,它没有聚集索引的概念。

两者的比较

下面是一个简单的比较表

MySQL中的联合索引学习教程 联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是keyin

对MySQL日志操作的一些基本命令总结 MySQL日志主要包含:错误日志、查询日志、慢查询日志、事务日志、二进制日志;日志是mysql数据库的重要组成部分。日志文件中记录着mysql数据库运行

MySQL的日志基础知识及基本操作学习教程 MySQL日志主要包含:错误日志、查询日志、慢查询日志、事务日志、二进制日志;日志是mysql数据库的重要组成部分。日志文件中记录着mysql数据库运行

标签: mysql索引和主键

本文链接地址:https://www.jiuchutong.com/biancheng/312353.html 转载请保留说明!

上一篇:Yii 连接、修改 MySQL 数据库及phpunit 测试连接

下一篇:MySQL中的联合索引学习教程(mysql联合索引使用规则)

  • 房地产预缴增值税计算方式
  • 商贸企业辅导期是什么
  • 我国增值税的纳税人是如何管理的
  • 存货是根据总账科目计算填列吗
  • 验收入库材料结转怎么写
  • 劳务报酬和工资薪金哪个税率高
  • 购买土地自建厂房,土地怎样摊销
  • 增值税不含税销售额怎么计算
  • 进项税额转出税率
  • 销项发票导出是什么意思
  • 消费税为什么要计入成本
  • 增值税一般计税方法
  • 用于本企业职工的福利应当征收消费税吗
  • 建筑企业资质使用对建造师补充要求
  • 收到招聘通知
  • 库存商品低价销售违法吗
  • 房地产开发预提费用
  • 固定资产清单申报是什么意思
  • 有限合伙的定义
  • 一般纳税人能用小企业会计准则吗
  • 中途做账的企业如何建账
  • 记账凭证按照填列方式的分类包括
  • 无形资产有使用期限
  • 汇算清缴的年报在哪里查询
  • 场地维修属于什么费用
  • 工程项目预缴增值税
  • 计提折旧计算公式是什么
  • 脚手架属于什么费用
  • PHP:xml_set_element_handler()的用法_XML解析器函数
  • 出差的误餐费会计分录
  • php字符串定义的三种方式
  • 不征税收入用于支出所形成的费用是什么意思
  • powergenie是什么程序
  • win7指定程序用指定网卡
  • 营改增之前的房子现在出售怎么开票
  • php的什么函数可以判断变量是否存在
  • 财政专户资金是什么意思
  • 第二季度所得税怎么算
  • vscode+live server——更改端口号——基础积累
  • 【小沐学C++】C++ MFC中嵌入web网页控件(WebBrowser、WebView2、CEF3)
  • python 量化
  • 简单的php文件
  • 股东出资方式包括
  • 出售持有股票会计处理
  • 动态规划知乎
  • 网上如何增加办税人员
  • 转入固定资产清理会计科目
  • 营改增后建筑企业如何正确开具发票
  • SQLserver2008数据库Excel数据导入语句
  • access 模糊匹配
  • 用PostgreSQL数据库做地理位置app应用
  • mysql索引最大数量
  • 会计准则中规范性的内容
  • 本月没开票还需要上报汇总吗
  • 增值税期末留抵退税附加税退还吗
  • 以前年度损益调整科目编码是多少
  • 知识产权申请如何申请
  • 支付给个人的佣金如何代扣个税
  • 转账给个人账户
  • 企业支付宝扣费
  • 固定资产处置怎么报税
  • 企业受赠资产会计处理
  • 营改增的范围
  • 企业承担个人所得税分录怎么做
  • 科目汇总表里的应交税费
  • 出纳日记账的日期以什么为准
  • mysql分区语句
  • linux缓存过大会宕机吗
  • 惠普笔记本重装系统后没有无线连接
  • 欢迎使用本公司智能语音电动车
  • Unity3d OnApplicationPause与OnApplicationFocus 判断游戏暂停还是重新启动
  • win10下载杀毒软件
  • unityplayer安卓
  • unity 版本控制
  • android studio快捷键补全
  • pythone爬虫
  • javascript教程 csdn
  • Python字符串数组
  • xmpp client
  • 干部试用期满转正考察谈话提纲
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设