1.MySQL为什么要用数字做自增主键?

首先为什么我们使用的是int类型,而不是varchar类型

  • int永远是固定的4个字节,而char类型是1~255字节之间

优点

  1. 占用空间小,节省CPU开销
  2. 在使用中,通常会在主键上建立索引,使用整形可以将更多地索引载入内存,提高性能
  3. 使用整形才可以使用AUTO_INCREAMENT

缺点

  • 产生锁竞争的问题
    在某个时刻,用户甲、用户乙、用户丙可能会同时或者先后(前面一个作业还没有完成)对数据表A进行查询或者更新的操作。当某个线程涉及到更新操作时,就需要获得独占的访问权。在更新的过程中,所有其它想要访问这个表的线程必须要等到其更新完成为止。此时就会导致锁竞争的问题。

2.为什么不能没有主键?

  • 主键起到了一个唯一标识的作用,保证我们可以安全的更改或删除表中指定的某一行

成为主键需要具备的两个条件

  1. 任何两行都不具有相同的主键值
  2. 每个行都必须具有一个主键值(主键列不允许NULL值)

3.主键的选择顺序?

  • (只选择这一个)选择与业务内容无关的一个自增字段作为主键

    • 使用自增主键,那么新来的数据就顺序插入到末尾,当一页写满,操作系统开辟另一页供写;如果使用的是非自增主键,那么主键的值就是随机的,那么插入的时候就需要,插入到现有索引页的某一个位置。这时目标页的数据就需要移动,再从磁盘读取,增加了很多开销,且容易产生内存碎片。
  • 参考

MySQL为什么要用数字做自增主键?相关推荐

  1. mysql添加数据的同时返回自增主键id

    方法一(实测可用): <insert id="add" useGeneratedKeys="true" keyProperty="id" ...

  2. mysql自增主键到头了怎么办_自增主键用完了怎么办

    在面试中,大家应该经历过如下场景 面试官:"用过mysql吧,你们是用自增主键还是UUID?" 你:"用的是自增主键" 面试官:"为什么是自增主键?& ...

  3. mysql 主键自增_还再使用数据库自增主键吗?

    加油站: 在数字经济时代,数据的重要性堪比石油.大数据的四个特点:Volume(数据体量大).Variety(数据类型繁多).Velocity(处理速度快).Value(商业价值高),只要合理利用数据 ...

  4. MySQL自增主键删除后重复问题

    这是我同事的一个朋友遇到的问题,标题可能有些拗口,我重现下场景: 设置一张MySQL表,表里有一个自增主键ID,往表里插入数据,假如插入数据之后表最后一行的ID是100,我先删除这条ID为100的记录 ...

  5. oracle 实现 自增主键功能

    转自:https://blog.csdn.net/zxh2075/article/details/78488141 之前有一项工作是将mysql的数据库实现转移到oracle,遇到了自增主键实现的问题 ...

  6. 数据库自增主键用完了怎么办

    引言 在面试中,大家应该经历过如下场景 面试官:"用过mysql吧,你们是用自增主键还是UUID?" 你:"用的是自增主键" 面试官:"为什么是自增主 ...

  7. 自增主键用完了怎么办?

    点击上方"Java后端技术",选择"置顶或者星标" 你关注的就是我关心的! 作者:孤独烟 微信公众号:孤独烟(zrj_guduyan) 引言 在面试中,大家应该 ...

  8. bigint如何自增_自增主键用完了该怎么办

    引言 在面试中,大家应该经历过如下场景面试官:"用过mysql吧,你们是用自增主键还是UUID?" 你:"用的是自增主键" 面试官:"为什么是自增主键 ...

  9. MySQL使用on duplicate key update时导致主键不连续自增

    在做数据统计的时候,我们经常会用到mysql的on duplicate key update语法来自动更新数据,比如 最近项目上需要实现这么一个功能:统计每个人每个软件的使用时长,客户端发过来消息,如 ...

最新文章

  1. SQL Server 查看identity值的几种方法。
  2. P4294-[WC2008]游览计划【斯坦纳树】
  3. JavaScript中的原型继承原理
  4. sklearn特征工程
  5. springboot之数据校验及多环境切换
  6. 如和用Python获取今日头条上面三千美女图,且看教程
  7. 如果你正处于迷茫期,那就来做这份工作吧!
  8. sql中全文检索的具体细节
  9. 强悍的 Ubuntu —— 粘贴板
  10. 用Python画一颗心、小人发射爱心
  11. 使用py 和flask 实现的服务器系统目录浏览,日志文件实时显示到网页的功能
  12. 计算机excel素材,excel操作练习题素材.doc
  13. 怎样缩小图片大小kb?
  14. PSD95抗体研究丨SYSY PSD95抗体结果图展示
  15. 高效能人士的七个习惯简介
  16. 融云会话界面自定义功能_Android快速集成融云
  17. QT HTTP接收多个数据包生成图片
  18. Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Lig
  19. AWD平台搭建–Cardinal
  20. 贝叶斯网络、拉普拉斯平滑

热门文章

  1. Kubernetes CRD开发模式及源码实现深入剖析-Kubernetes商业环境实战
  2. welcome to my blog
  3. PL/SQL Developer 使用技巧小结(转)
  4. linux带宽最小的远程桌面,【图片】linux下哪种远程桌面服务最快?_linux吧_百度贴吧...
  5. linux 安装ftp下载,LINUX FTP安装与配置
  6. Mysql高级考试题_MySQL高级应用答案试题题目及答案,期末考试题库,章节测验答案...
  7. Scude导入MySQL_FM2017_FMF赛季更新和真实修正数据库[更新至9.9,超过89000个更新]
  8. 如何在redhat8里使用gcc命令_如何使用who命令检查用户登录信息
  9. html标签object和embed,html标签object和embed的区别
  10. java applet 换行_Java复习题