Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 表的相邻行中的自动增量ID存在较大间隙是否存在任何(潜在)问题?_Mysql_Sql_Database - Fatal编程技术网

Mysql 表的相邻行中的自动增量ID存在较大间隙是否存在任何(潜在)问题?

Mysql 表的相邻行中的自动增量ID存在较大间隙是否存在任何(潜在)问题?,mysql,sql,database,Mysql,Sql,Database,我有一个mysql web应用程序,允许用户编辑个人信息 单个记录跨多个表存储在数据库中。一个表中有一行用于记录,然后还有一对多的表用于相关信息。一对多表中的行还可以指向其他一对多表 所有这些都意味着,单个个人信息记录的数据是一棵树,在数据库中非常分散 为了更新记录,我只需删除整个旧的树,然后重新插入一个新的树,而不是试图处理update、delete和insert语句的大杂烩来处理可能在保存过程中更改的所有不同信息。这在应用程序方面要简单得多,到目前为止,它对我来说运行良好,没有任何问题 但是

我有一个mysql web应用程序,允许用户编辑个人信息

单个记录跨多个表存储在数据库中。一个表中有一行用于记录,然后还有一对多的表用于相关信息。一对多表中的行还可以指向其他一对多表

所有这些都意味着,单个个人信息记录的数据是一棵树,在数据库中非常分散

为了更新记录,我只需删除整个旧的树,然后重新插入一个新的树,而不是试图处理update、delete和insert语句的大杂烩来处理可能在保存过程中更改的所有不同信息。这在应用程序方面要简单得多,到目前为止,它对我来说运行良好,没有任何问题

但是我注意到,一对多表中的一些自动递增ID开始逐渐变高。至少还需要几十年的时间,我才能接近INT的极限,更不用说BIGINT了——但是我仍然想知道这种方法是否有我应该注意的缺点

因此,我想我的问题是:对于像我这样的数据库结构,它由分布在多个表中的大型信息树组成,当更新信息时,其中的任何部分都可能已更改,是否可以删除旧的树并重新插入新的树?或者我应该重新思考这个问题。表中行的ID之间存在较大的间隙,这是正常的还是不正常的


(提前)感谢您的帮助。

如果您的主键已编入索引(它们应该编入索引),那么除了需要不时压缩的数据库文件之外,您应该不会遇到任何问题


然而,您所存储的数据可以更好地存储在文档数据库中,比如MogoDB,您是否考虑使用其中的一个?

IDS中的空隙与数据库无关。它不在乎你是否去
1、9999、9999999999等…
。它们都只是数字。如果你的用户希望事情看起来是连续的,这可能对他们很重要。Marc B是正确的。它是唯一的标识符,仅此而已。之所以让它自动递增,是为了确保它确实是唯一的。但是DB不在乎这个数字是多少。这是一个相当广泛的问题。。。我很想回答这个问题,但我认为这是有道理的。。。也许会转移到另一个站点。。。