1.一个没加主键的表,它的数据无序的放置在磁盘存储器上,一行一行的排列的很整齐.
2.一个加了主键的表,并不能被称之为「表」。如果给表上了主键,那么表在磁盘上的存储结构就由整齐排列的结构转变成了树状结构,并且是「平衡树」结构,换句话说,就是整个表就变成了一个索引。没错,再说一遍,整个表变成了一个索引,也就是所谓的「聚集索引」。 这就是为什么一个表只能有一个主键,一个表只能有一个「聚集索引」,因为主键的作用就是把「表」的数据格式转换成「索引(平衡树)」的格式放置。

3.给表中多个字段加上常规的索引,那么就会出现多个独立的索引结构.字段中的数据就会被复制一份出来,用于生成索引,叶子节点是主键ID,这也就是非聚集索引.,下面就是一个主键和三个常规索引的结构

4.通过主键去查,叶子节点就是数据行

5.通过其他索引字段去查,那么叶子节点是主键ID,然后再去根据主键查,聚集索引(主键)是通往真实数据所在的唯一路径

7.有一种例外可以不使用聚集索引就能查询出所需要的数据,这种非主流的方法称之为「覆盖索引」查询,也就是平时所说的复合索引或者多字段索引查询

转载于:https://www.cnblogs.com/taoshihan/p/11265427.html

[MySQL] 为什么要给表加上主键相关推荐

  1. mysql 备库 hang住_mysql主键的缺少导致备库hang住

    最近线上频繁的出现slave延时的情况,经排查发现为用户在删除数据的时候,由于表主键的主键的缺少,同时删除条件没有索引,或或者删除的条件过滤性极差,导致slave出现hang住,严重的影响了生产环境的 ...

  2. MySQL:创建数据库,数据表,主键和外键

    目录 前言: 安装MySQL: 打开MySQL: 创建数据库: 查看已建数据库: 查看数据库引擎: 创建数据表: 主键约束: 单字段主键: 多字段联合主键: 外键约束: 前言: MySQL数据库安装了 ...

  3. MySql之DDL操作创建表(添加主键, 外键约束以及基本的数据类型)

    1.创建表基本语句 CREATE TABLE users( username VARCHAR(50) PRIMARY KEY, userpwd VARCHAR(50) NOT NULL, userag ...

  4. mysql建表时主键_mysql建表时怎么设置主键?

    设置方法:在"CREATE TABLE"语句中,通过"PRIMARY KEY"关键字来指定主键,语法格式"字段名 数据类型 PRIMARY KEY [ ...

  5. MySQL建表,主键,外键

    1.创建表 MySql中,创建表是通过SQL语句create table实现的.语法形式如下: create table 表名( 属性名 数据类型[完整性约束条件],            属性名 数 ...

  6. mysql建表时主键_mysql建表时设置主键的方法

    mysql建表时设置主键的方法 发布时间:2020-10-10 15:17:28 来源:亿速云 阅读:119 作者:小新 mysql建表时设置主键的方法?这个问题可能是我们日常学习或工作经常见到的.希 ...

  7. MySQL修改表的主键字段

    MySQL修改表的主键字段 1. 命令 ALTER TABLE sleep_device_day_temp DROP PRIMARY KEY ,ADD PRIMARY KEY ( id );

  8. Flink MySQL CDC 增量同步要求源表有主键

    版本:2.2 如果源表没有主键,则运行时报错: 2023-03-13 21:28:25,244 INFO [679] [com.ververica.cdc.connectors.mysql.sourc ...

  9. 数据库表的主键、唯一约束和索引

    目录 1.MySQL的主键. 2.MySQL的唯一约束. 3.MySQL的索引. 4.主键.唯一约束和唯一索引的区别. 1.MySQL 的 主键. "主键" 的完整称呼是 &quo ...

最新文章

  1. R可视化在回归曲线中添加回归方程式
  2. python write非法字符报错_Python爬虫实现的微信公众号文章下载器
  3. vb检测电脑温度_电脑硬件温度多少正常?如何查看电脑硬件温度?
  4. jquery插件封装指南
  5. 【结论】Number(jzoj(gz) 1781)
  6. mysql确认半同步命令_怎么判断mysql是否是半同步复制
  7. 使用Linux命令行测试网速
  8. PHP(4):PHP操作WORD文件
  9. 【图像处理】图像分割之(一~四)GraphCut,GrabCut函数使用和源码解读(OpenCV)
  10. webpack基本使用
  11. 有向图的强联通分量之:【求最长链】【求最长链的方案数(图论中的方案数DP)】【最长链和最大半联通子图 节点数相同】【最长链与最大半联通子图等价又不完全等价】
  12. Functional Commitment Schemes: From Polynomial Commitments to Pairing-Based Accumulators学习笔记
  13. SSD-Tensorflow 512x512 训练配置
  14. 谷歌首席决策科学家:30篇文章通关数据科学与人工智能(转自TinyMind社区)
  15. 在线投票系统前端html,在线注册、登录的投票系统
  16. 南京理工大学计算机学号6,学生学籍管理系统
  17. 2021-2027全球与中国汽车互联信息娱乐系统市场现状及未来发展趋势
  18. 添加USB wifi驱动到RK3568
  19. 计算机主机红灯不闪硬盘工作,电脑开机后黑屏,硬盘和键盘指示灯不亮.主机无自检信息,该如何检修?...
  20. JNI中Fatal signal 11 (SIGSEGV), code 1的错误.

热门文章

  1. centos7 转换为lvm_[转] centos7 调整XFS格式的LVM大小
  2. rabbitmq延迟队列实现
  3. 不会英语能学oracle吗,英语非常差该怎么学啊?
  4. python编辑器_python编辑器,作为小白该如何抉择?
  5. mysql load会锁表吗_Mysql必读MySQL中由load data语句引起死锁的解决案例
  6. toad导入数据_利用TOAD实现EXCEL数据在oracle的导入导出
  7. android 去空字符串,android – TextUtils.isEmpty()方法为空字符串返回false
  8. php 正则过滤style,PHP 过滤常用标签的正则表达式
  9. 循环结果添加到集合_Java Note-数据结构(4)集合
  10. jQuery中ajax的触发时机,javascript - 如何在启动Ajax查询的jQuery中触发方法change() - 堆栈内存溢出...