Java Android SQLite ID

Java Android SQLite ID,java,android,sqlite,auto-increment,Java,Android,Sqlite,Auto Increment,我想知道SQLite如何处理删除前几行后添加新行的问题。 例如,我有3条记录/行及其3个自动递增ID: ID 1 ID 2 ID 3 我删除了ID为2的记录,因此现在我有: ID 1 ID 3 现在我添加一个新记录/行 该数据库是添加ID 4还是添加ID 2(当其自动递增时)? 我想它只是从上一条记录中加了+1,但我不确定。 但如果是这样的话,那会如何影响数据库的大小呢? 如果我经常删除/添加新记录,在你知道之前,ID将是一百万? 这会有什么问题吗? 是否有自动增量来填充跳过的ID号(已删

我想知道
SQLite
如何处理删除前几行后添加新行的问题。 例如,我有3条记录/行及其3个自动递增ID:

ID 1 
ID 2
ID 3
我删除了ID为2的记录,因此现在我有:

ID 1
ID 3
现在我添加一个新记录/行

该数据库是添加ID 4还是添加ID 2(当其自动递增时)? 我想它只是从上一条记录中加了+1,但我不确定。 但如果是这样的话,那会如何影响数据库的大小呢? 如果我经常删除/添加新记录,在你知道之前,ID将是一百万? 这会有什么问题吗?
是否有自动增量来填充跳过的ID号(已删除)?

因为SQL不关心要删除的当前行,所以在创建新行时,它将始终使用最后一个已知的增量值

例:

二十 二十一,

一万 10001


这就是标准SQL如何与autoincrement一起工作。

第页间接回答了您的许多问题,但我将提供一个精简版本

该数据库是添加ID 4还是添加ID 2(当其自动递增时)

它将使用4

但如果是这样的话,那会如何影响数据库的大小呢

主键索引的大小将增加,但每行中的数据将比数字索引更快地增加数据库的大小。因此,这不是应用程序的问题

如果我经常删除/添加新记录,在你知道之前,ID将是一百万?这会有什么问题吗

SQLite能容纳的最大id是9223372036854775807,略高于一百万。假设你(以某种方式)每毫秒增加一个id,并且你的应用程序持续运行,你将在不到300000年内达到这个极限。
不要失去希望!在此之后,SQLite将随机选择ID搜索一个未使用的ID,只有在检查了“合理数量”的ID之后,SQLite才会放弃并抛出一个声明已满的错误

是否有自动递增功能来填充跳过的ID号(已删除)


我相信你可以写一个查询来实现这一点,但找到这些空索引只会让你的应用程序速度变慢。因此,考虑到上面的数学:我不会担心的。:) ID 4 < /代码>,并且没有办法设置自动增量来填充那些被跳过的ID。@ RexLaKIO我应该考虑一个大的未来ID号作为一个问题(数据库大小/优化等)吗?我真的不认为它会对您的程序的效率有很大的影响,但是你可以运行一些测试:几千次删除和插入,然后检查从数据库中检索的速度;但我可以肯定地说。我是否应该考虑一个大的未来ID号作为一个问题(数据库大小/优化等)?你最好不应该关心ID,因为这已经是唯一的开始,没有两行会有相同的ID.30万年?我需要更多的时间来完成这个应用程序,所以它应该是好的。