MySQL为什么要给表加上主键

こ雲淡風輕ζ 提交于 2020-03-20 10:42:19

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架构师

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!