前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL为什么要给表加上主键

MySQL为什么要给表加上主键

原创
作者头像
不会飞的小鸟
修改2020-03-20 10:14:03
2.5K0
修改2020-03-20 10:14:03
举报
文章被收录于专栏:只为你下只为你下

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

  import matplotlib.pyplot as plt   plt.rcParams[www.yongyunzhuce.cn'font.sans-serif']=['SimHei']   x_data = [2011,2012,2013,2014,2015,2016,2017]   y_data = [www.zhuyngyule.cn 58000,60200,63000,71000,84000,90500,107000]   plt.xticks(x_data, ['2011年','2012年','2013年','2014年','2015年','2016年','2017年'])   plt.yticks(y_data)   plt.plot(x_data,www.feiyuptzc.cn_data)   plt.show(www.xingchenylzc.cn)   结果如下:   有些时候,由于数据脱敏的需要,我们不要显示刻度,还可以这么写:   plt.xticks(www.shentuylgw.cn_data, [baishiyl2zc.cn ])   plt.yticks(www.tianjipp3zc.cn_data, [www.yunsheng-pt.com])   这样展现出来的图形如下:   实际上,我们还有更狠的操作,直接关闭坐标轴:   plt.axis("off"www.jintianxuesha.com)   结果如下:   范围设置   我们还可以对坐标轴的范围进行设置,如下:   import matplotlib.pyplot as plt   plt.rcParams['font.sans-serif'www.lecaixuanzc.cn]=[www.feishenbo.cn'SimHei']   x_data = [2011,2012,2013,2014,2015,2016,2017]   y_data = [58000,60200,63000,71000,84000,90500,107000]   plt.xlim(2011, 2020)   plt.ylim(50000, 90000)   plt.plot(x_data, y_data)

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

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

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

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

以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要请戳这里 助你进阶PHP架构师

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档