如何在MySQL中處理自增ID列的碎片?
每當我們重新編號時,可能會出現問題。需要為列宣告一個唯一的ID。
在MySQL 5.6 InnoDB版本中,我們可以透過在INSERT語句中包含ID列來重用auto_increment ID,並且可以指定我們想要的任何特定值。
情況如下:
- 每當我們刪除具有最大編號的ID時
- 每當我們啟動和停止MySQL伺服器時
- 每當我們插入新記錄時
使用auto_increment變數的自增ID示例。
mysql> create table UniqueAutoId -> ( -> id int auto_increment, -> Unique(id) -> ); Query OK, 0 rows affected (0.45 sec)
將記錄插入表中。
mysql> insert into UniqueAutoId values(); Query OK, 1 row affected (0.13 sec) mysql> insert into UniqueAutoId values(); Query OK, 1 row affected (0.16 sec) mysql> insert into UniqueAutoId values(); Query OK, 1 row affected (0.07 sec) mysql> insert into UniqueAutoId values(); Query OK, 1 row affected (0.10 sec) mysql> insert into UniqueAutoId values(); Query OK, 1 row affected (0.10 sec)
顯示所有記錄。
mysql> select *from UniqueAutoId;
以下是輸出。
+----+ | id | +----+ | 1 | | 2 | | 3 | | 4 | | 5 | +----+ 5 rows in set (0.00 sec)
為了刪除記錄,我們使用了DELETE語句。在這裡,我們刪除id=5;
mysql> DELETE from UniqueAutoId where id=5; Query OK, 1 row affected (0.14 sec)
顯示所有記錄。
mysql> select *from UniqueAutoId;
以下是輸出。
+----+ | id | +----+ | 1 | | 2 | | 3 | | 4 | +----+ 4 rows in set (0.00 sec)
讓我們再次從表中刪除一條記錄。
mysql> delete from UniqueAutoId where id=2; Query OK, 1 row affected (0.15 sec)
再次顯示錶中的記錄。
mysql> select *from UniqueAutoId;
以下是輸出。
+----+ | id | +----+ | 1 | | 3 | | 4 | +----+ 3 rows in set (0.00 sec
以上結果導致碎片。
廣告