FAQ系列 | MySQL索引之主键索引

简介: FAQ系列 | MySQL索引之主键索引

导读

在MySQL里,主键索引和辅助索引分别是什么意思,有什么区别?

上次的分享我们介绍了聚集索引和非聚集索引的区别,本次我们继续介绍主键索引和辅助索引的区别。

1、主键索引

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

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

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

这么做的好处有几点:

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

MyISAM表因为是堆组织表,主键类型设计方面就可以这么讲究了。

2、辅助索引

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

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

3、主键索引和辅助索引的区别

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

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

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

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

            </div>
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
算法 Android开发
安卓逆向 -- 绕过SO层签名验证
安卓逆向 -- 绕过SO层签名验证
414 1
|
数据可视化 JavaScript 数据挖掘
一键自动化数据分析!快来看看 2022 年最受欢迎的 Python 宝藏工具库! ⛵
探索性数据分析(EDA)在机器学习中至关重要!这些高效又绝美的宝藏库,快用起来——Matplotlib、Seaborn、Plotly、Bokeh、Altair、pandas-profiling、Sweetviz、AutoViz、Microsoft Power BI、Tableau!
4005 1
一键自动化数据分析!快来看看 2022 年最受欢迎的 Python 宝藏工具库! ⛵
|
监控 机器人 区块链
深度分析——狩猎者defi夹子机器人系统开发技术原理
过去一年的时间里,DeFi可谓是迅速崛起,发展态势极其迅猛。虽然DeFi尚处于发展早期阶段,但活跃度和参与度都呈指数地在增长。在DeFi中,交易被打包的顺序极大地影响了DeFi的经济利益。例如,在 UniSwap 中,同样两个针对某交易对的买单,先被执行的交易将获得更多代币。若你在一笔买单前买入同样的代币,然后又赶紧卖出,则将毫无风险的获利。
深度分析——狩猎者defi夹子机器人系统开发技术原理
|
缓存 小程序 JavaScript
微信小程序用户登录功能探究
微信小程序用户登录功能探究
569 0
微信小程序用户登录功能探究
|
弹性计算
阿里云服务器带宽价格:包括固定带宽费用和流量收费明细表
按固定带宽计费1M带宽一个月23元,按使用流量计费1GB流量0.8元,如果云服务器带宽使用率低于10%,那么首选按使用流量计费,如果带宽实际利用率较高的话,按固定带宽计费更划算一些。
1987 0
阿里云服务器带宽价格:包括固定带宽费用和流量收费明细表
|
XML 监控 Shell
「性能优化系列」APP启动优化理论与实践(上)
尤其在如今的快时代,一款秒开的App比一款启动需要耗费好几秒的App更容易被用户喜爱和长期使用,整的不好还容易被用户永久拉入黑名单。这时候,应用的启动优化就必不可少了
402 0
|
计算机视觉
初探单目相机测距——相机标定
初探单目相机测距——相机标定
1255 0
初探单目相机测距——相机标定
|
Oracle 关系型数据库 MySQL
MySQL窗口函数——分组排序函数:number_rank(),rank(),dense_rank()
MySQL窗口函数——分组排序函数:number_rank(),rank(),dense_rank()
718 0
MySQL窗口函数——分组排序函数:number_rank(),rank(),dense_rank()
|
小程序 JavaScript
微信小程序——拼图游戏案例
微信小程序——拼图游戏案例
758 0
微信小程序——拼图游戏案例