我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql何时选择自增id?何时不选?

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql何时选择自增id?何时不选?

在MySQL中,数据表的主键一般采用id字段自增的形式。使用自增ID给我们带来不少便捷,但也有不少坏处。自增ID是在设计表时如果将id字段的值设置为自增的形式也就是AUTO_INCREMENT,那么当插入一行数据时就无需指定id,数据表会根据前一个id值+1进行填充。指定了AUTO_INCREMENT的列必须要建索引,一般把ID作为主键,这样系统会自动为ID建立索引。

好处:

(1) 增加记录时,可以不用指定id字段,不用担心主键重复问题。
(2)数据库自动编号,速度快,而且是增量增长,按顺序存放,对于检索非常有利;
(3)数字型,占用空间小,易排序,在程序中传递也方便;
坏处:

(1) 不具有连续性,表中auto_increment最大值被删除,将不会被重用。就是说会跳号(如果设定的auto_increment_increment是1,那么下一次插入的id值将会从被删除的最大值算起,也就是被删除的最大值+1)
(2)历史数据表的主键id会与数据表的id重复,两张自增id做主键的表合并时,id会有冲突,但如果各自的id还关联了其他表,这就很不好操作。
(3) 很难处理分布式存储的数据表,尤其是需要合并表的情况下
(4) 在系统集成或割接时,如果新旧系统主键不同是数字型就会导致修改主键数据类型,这也会导致其它有外键关联的表的修改,后果同样很严重;
不用自增id可以选用UUID。UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。UUID的目的,是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。如此一来,每个人都可以建立不与其它人冲突的UUID。在这样的情况下,就不需考虑数据库建立时的名称重复问题。

UUID的优点:
(1)能够保证独立性,程序可以在不同的数据库间迁移,效果不受影响。
(2)保证生成的ID不仅是表独立的,而且是库独立的,这点在你想切分数据库的时候尤为重要。
(3)安全性较高
UUID的缺点:
(1)uuid是无序的,这会严重影响到表的插入性能。
(2)uuid占的空间大

大部分场景下,我们都建议主键设为自增。

不建议主键自增的场景:mysql分库分表下的id,考虑具体业务的场景

来源地址:https://blog.csdn.net/Jeff__Chou/article/details/129438790

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql何时选择自增id?何时不选?

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

nodejs 安装时如何选择

Node.js 是一种轻量级的 JavaScript 运行时,用于构建高性能的网络应用程序。它在最初发行之后,迅速成为开发者的最爱,成为构建高效服务器端应用程序的最佳选择之一。为了使用 Node.js,必须先安装 Node.js。本篇文章将帮助你选择最适合你的 Node.js 安装方式。要安装 Node.js,必须先到官网 https://nodejs.org/en/ 下载 N
2023-05-16

使用Selenium时,如何选择Chro

ChromeDriver版本支持的Chrome版本v2.46v72-74v2.45v71-73v2.44v70-72v2.43v69-71v2.42v68-70v2.41v67-69v2.40v66-68v2.39v66-68v2.38v6
2023-01-31

MySQL中使用binlog时格式该如何选择

一、binlog的三种模式1.statement level模式每一条会修改数据的sql都会记录到master的bin-log中。slave在复制的时候sql进程会解析成和原来master端执行过的相同的sql来再次执行。 优点:state
2022-05-31

JS如何实现时间选择器

今天小编给大家分享一下JS如何实现时间选择器的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。dateTime.jsfuncti
2023-07-02

如何选择适合自己的MySQL版本?

如何选择适合自己的MySQL版本?在选择适合自己的MySQL版本时,我们需要考虑一些关键因素,如性能、安全性、功能特性等。不同的MySQL版本可能有不同的特性和优势,因此选择合适的版本对于系统的稳定性和性能至关重要。下面将介绍如何选择适合
如何选择适合自己的MySQL版本?
2024-03-15

如何解决mybatis-plus添加数据时id自增问题

小编给大家分享一下如何解决mybatis-plus添加数据时id自增问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!mybatis-plus添加数据时id自增问题mybatis-plus插入数据,id自增列变的很长.比如
2023-06-26

如何选择合适的MySQL日期时间类型来存储你的时间

构建数据库写程序避免不了使用日期和时间,对于数据库来说,有多种日期时间字段可供选择,如 timestamp 和 datetime 以及使用 int 来存储 unix timestamp。 不仅新手,包括一些有经验的程序员还是比较迷茫,究竟我
2022-05-20

MySQL和Oracle:学习大数据技术时的两大选择,如何抉择?

MySQL和Oracle:学习大数据技术时的两大选择,如何抉择?当今社会,数据正以爆炸式的速度增长。对于那些想要进入大数据行业的学习者来说,熟悉常见的数据库管理系统是至关重要的一步。而在数据库领域,MySQL和Oracle是两个备受关注的选
2023-10-22

VUE-ElementUI时间区间选择器如何使用

这篇文章主要介绍“VUE-ElementUI时间区间选择器如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“VUE-ElementUI时间区间选择器如何使用”文章能帮助大家解决问题。VUE-El
2023-06-30

建设网站时如何选择虚拟主机

这篇文章给大家介绍建设网站时如何选择虚拟主机,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。虚拟主机又称之为网站空间,目前网站 空间主要分为三种类型:1、虚拟主机--多个网站分享一台服务器资源。2、独立服务器--一台服务
2023-06-07

什么是老域名,购买时如何选择?

什么是老域名,购买时如何选择?老域名指的是注册时间较久的域名,可能还被启用过。如果想买老域名,可以结合下面几个方面来选择:
什么是老域名,购买时如何选择?
2024-01-23

如何在安装pip时选择特定的源?

pip如何指定源进行安装?引言当我们使用Python开发项目时,通常会使用pip命令行工具来安装、升级、卸载Python包。而pip默认使用官方仓库(pypi)进行包的下载与安装。然而,由于网络环境的限制,有时候我们需要指定其他源来进行
如何在安装pip时选择特定的源?
2024-01-18

编程热搜

目录