(与查找列表中最低未使用的唯一 ID和获取 SQL 表上未使用的唯一值有关)
假设我有一个包含 id 列和其他一些列的表(它们在这里没有任何区别):
+-----+-----+
| id |other|
+-----+-----+
id 具有数值递增的值。我的目标是获得最低的未使用 id 并创建该行。所以当然我第一次运行它会返回0
并且该行的行将被创建。执行几次后,它将如下所示:
+-----+-----+
| id |other|
+-----+-----+
| 0 | ... |
| 1 | ... |
| 2 | ... |
| 3 | ... |
| 4 | ... |
+-----+-----+
很多时候,其中一些行可能会被删除。让我们假设 id 为1
和的行3
已被删除。不,表格将如下所示:
+-----+-----+
| id |other|
+-----+-----+
| 0 | ... |
| 2 | ... |
| 4 | ... |
+-----+-----+
如果我现在再次运行查询,它想取回 id1
并且应该创建此行:
| id |other|
+-----+-----+
| 0 | ... |
| 1 | ... |
| 2 | ... |
| 4 | ... |
+-----+-----+
下次运行查询时,它应该返回 id 的3
, 5
,6
等。
运行这些查询的最有效方法是什么,因为我需要在一秒钟内经常执行它们(可以公平地假设 id 是表的唯一目的)?是否可以通过一个查询获得下一个未使用的行?或者通过引入另一个跟踪未使用的 id 的表是否更容易和更快?
如果它明显更快,那么只要所有数字在某个时间被重用,也有可能获得一种重用表中任何孔的方法。
额外的问题:我计划使用 SQLite 来存储这种信息,因为除了存储这些 id 之外我不需要数据库。是否有任何其他免费(如语音)服务器可以更快地完成这项工作?