gpt4 book ai didi

java - Android SQLite ID

转载 作者:行者123 更新时间:2023-12-01 04:50:51 25 4
gpt4 key购买 nike

我想知道 SQLite 如何处理在删除之前的一些行后添加新行。例如,我有 3 个记录/行及其 3 个自动增量 ID:

ID 1 
ID 2
ID 3

我删除了 ID 为 2 的记录,所以现在我有:

ID 1
ID 3

现在我添加一条新记录/行。

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

最佳答案

您的许多问题都可以在 SQLite's AUTOINCREMENT 上得到间接解答页,但我将提供一个精简版本。

Does that database add ID 4 or does it add ID 2 (when its auto increment)?

它将使用 4。

But if it does, how does that affect the database size?

主键索引的大小将会增长,但是每行中的数据将比数字索引更快地增加数据库的大小。所以对于应用来说这不是问题。

If I often delete / add new records the ID will be a million before you know it? Would that be any kind of problem?

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

Is there anyway for auto increment to fill the skipped ID numbers (which were deleted)?

我确信您可以编写一个查询来执行此操作,但找到这些空索引只会减慢您的应用程序的速度。因此考虑到上面的数学:我不会担心。 :)

关于java - Android SQLite ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14989693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com