(リスト内で最も低い未使用の一意のIDを検索し、SQLテーブルで未使用の一意の値を取得することに関連しています)
id列と他のいくつかを含むテーブルがあるとします(ここでは違いはありません):
+-----+-----+
| id |other|
+-----+-----+
idの値は数値的に増加します。私の目標は、使用されていないIDを最小にして、その行を作成することです。したがって、もちろん、初めて実行すると戻り0
、この行の行が作成されます。数回実行すると、次のようになります。
+-----+-----+
| id |other|
+-----+-----+
| 0 | ... |
| 1 | ... |
| 2 | ... |
| 3 | ... |
| 4 | ... |
+-----+-----+
かなり頻繁に、これらの行の一部が削除される可能性があります。とのIDを持つ行が削除された1
と仮定しましょう。3
テーブルは次のようにはなりません。
+-----+-----+
| id |other|
+-----+-----+
| 0 | ... |
| 2 | ... |
| 4 | ... |
+-----+-----+
ここでクエリを再度実行すると、IDが返され、次の1
行が作成されます。
| id |other|
+-----+-----+
| 0 | ... |
| 1 | ... |
| 2 | ... |
| 4 | ... |
+-----+-----+
次回クエリを実行すると、IDの、、などが返され3
ます。5
6
1秒間にかなり頻繁に実行する必要があるため、これらの種類のクエリを実行するための最も効果的な方法は何ですか(IDがテーブルの唯一の目的であると想定するのが妥当です)。1つのクエリで次の未使用の行を取得することは可能ですか?または、未使用のIDを追跡する別のテーブルを導入することで、より簡単かつ迅速になりますか?
大幅に高速な場合は、すべての数値がいつか再利用されるという条件で、テーブルの任意の穴を再利用する方法を取得することもできます。
ボーナスの質問:これらのIDを保存する以外はデータベースを必要としないため、この種の情報の保存にはSQLiteを使用する予定です。この仕事を大幅に速く行うことができる他の無料の(音声のように)サーバーはありますか?