MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで自動インクリメントID列の断片化を処理する方法は?


番号を付け直すたびに、問題が発生する可能性があります。列の一意のIDを宣言する必要があります。

MySQLバージョン5.6InnoDBでは、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

上記の結果、断片化が発生します。


  1. MySQLで初期値と自動インクリメントを設定するにはどうすればよいですか?

    AUTO_INCREMENT属性は、新しい行の一意のIDを生成するために使用されます。列が「NOTNULL」として宣言されている場合、その列にNULLを割り当てて、一連の数字を生成することができます。 AUTO_INCREMENT列に値が挿入されると、列はその値に設定され、シーケンスもリセットされるため、最大の列値から順番に値が自動的に生成されます。 既存の「AUTO_INCREMENT」列を更新して、「AUTO_INCREMENT」シーケンスもリセットできます。最新の自動生成された「AUTO_INCREMENT;値は、SQLの「LAST_INSERT_ID()」関数を使用するか、C AP

  2. MySQLシーケンスを作成する方法は?

    MySQLのシーケンスとは何ですか? MySQLでは、シーケンスとは、指定されている場合は1または0から昇順で生成される整数のリストを指します。多くのアプリケーションでは、特に識別のために一意の番号を生成するために使用されるシーケンスが必要です。 例 例としては、CRMの顧客ID、HRの従業員番号、サービス管理システムの機器番号などがあります。 MySQLでシーケンスを自動的に作成するには、列のAUTO_INCREMENT属性を設定する必要があります。これは通常、主キー列になります。 ルール AUTO_INCREMENT属性を使用するときは、次のルールに従う必要があります- すべての