关于mysql中自增加的ID问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于mysql中自增加的ID问题相关的知识,希望对你有一定的参考价值。

mysql数据库中新建了一个表,ID为主键,自增加。数据类型设置的是int.
现在我想知道,由于数据量很大,每天都会添加和删除一批数据,但自增加的ID一直在增加,删除的ID都不能重新利用吗?如果ID列一直增加,那有一天ID值超过了int的最大数值怎么办?这个问题一般是如何解决的呢?

首先明确答复你:超过之后会从0开始编码。下面以表示范围更小的单字节类型为例子说明,如果是有符号数据类型,首先从0开始编码,到127的时候就是最大,下一个数将是-128,随后-127、-126,直到0以后,又会从1开始编码。如果是无符号类型,那么会从0开始到256结束,然后又从0开始编号。

上面可能有点糊涂,但是仔细看的话,我相信你能明白。

其次我告诉你:你应该选择足够大的数据类型,为了防止数据重复,你可以让你的程序在未来的十年都不会因为这样的问题成为缺陷,下面是MYSQL各数据类型表示的范围:

类型
字节
带符号的范围
无符号的范围

TINYINT
1
-128~127
0~ 255

SMALLINT
2
-32768~ 32767
0~ 65535

MEDIUMINT
3
-8388608~8388607
0~ 16777215

INT
4
-2147483648~2147483647
0~ 4294967295

BIGINT
8
-9223372036854775808~ 9223372036854775807
0~ 18446744073709551615

不直到你的业务有多少,BIGINT类型可能10年不会存满吧。

最后说一句,不要试图去想办法让ID值重复使用,尽管有许多办法可以实现,但那几乎是得不偿失的。
参考技术A int(11)也就是1000亿,估计你够用了 参考技术B 不行的说

在 MySql Workbench 中自定义键盘快捷键

【中文标题】在 MySql Workbench 中自定义键盘快捷键【英文标题】:Customizing Keyboard Shortcuts in MySql Workbench 【发布时间】:2012-08-16 03:02:26 【问题描述】:

多年来,我主要使用 MS SQL Server(以及用于常见任务的 SQL Server Management Studio),现在我开始使用 MySql。迄今为止,我一直在使用 MySQL Workbench,并且总体上对它感到满意。

不过,我希望能够为某些命令(例如来自this list 的命令)分配自定义键盘快捷键。例如,我更愿意坚持使用“F5”的 MS-SQL 方法来执行查询,而不是点击“修改器+返回”。我还没有遇到一个简单的方法来做到这一点。我的问题是:

这在 MySQL Workbench 中是否可能(例如附加插件)? 如果没有,MySQL Workbench 的替代品是否提供此功能?

环境:

Ubuntu 12.04 LTS,32 位 MySQL 服务器版本 5.5.24-0ubuntu0.12.04.1 MySQL Workbench 版本 5.2.38,修订版 8753

干杯!

【问题讨论】:

我希望我能多次支持您的问题。我可能已经回到这里 10 次了,因为每次我升级我的 mysql-workbench 版本时,它都会清除我的键绑定! 【参考方案1】:

您可以修改 main_menu.xml 文件(对我来说,在 Ubuntu 12.04 上这是在 /usr/share/mysql-workbench/data/ 中)。修改后需要重启 MySQL Workbench。

看起来像这样

    <value type="object" struct-name="app.MenuItem" id="com.mysql.wb.menu.query.exec"> 
      <link type="object" key="owner" struct-name="app.MenuItem">com.mysql.wb.menu.query</link> 
      <value type="string" key="caption">Execute (All or Selection)</value> 
      <value type="string" key="name">query.execute</value> 
      <value type="string" key="command">builtin:query.execute</value> 
      <value type="string" key="itemType">action</value> 
      <value type="string" key="shortcut">Modifier+E</value>
    </value>

倒数第二行(修饰符+E)是我编辑的。以前它说“Modifier+Shift+Return”。请注意,这不是别名(不能同时拥有)。

【讨论】:

不错的一个!非常感谢泰勒 :)! 或者如果你想让键盘匹配MS SQL Server,试试这个:F5 C:\Program Files\MySQL\MySQL Workbench x.x\data\ 适用于 Windows 用户 谢谢泰勒。我也在 macOS (mac os x) 中找到了文件。它坐在这里:/Applications/MySQLWorkbench.app/Contents/Resources/data/main_menu.xml。享受吧!

以上是关于关于mysql中自增加的ID问题的主要内容,如果未能解决你的问题,请参考以下文章

mysql中的命令让 id 都增加10

mysql数据库 id主键自增加删除后不连续的问题

Mysql中怎么使设置了自动增加的id,实现动态更新?

Thinkphp框架中自定义修改success和error页面

关于使用MySQL语法ON DUPLICATE KEY UPDATE单个增加更新及批量增加更新的sql

使用 phpmyadmin 导入时在 mysql 中自动增加列