導入: MySQL を使用してテーブルを作成する場合、通常は自動インクリメント フィールド (AUTO_INCREMENT) を作成し、このフィールドを主キーとして使用します。この記事では、自動増分 ID に関するすべてを質問と回答の形式で説明します。 注:この記事はすべて Innodb ストレージ エンジンに基づいています。 あまり長々と話さずに、詳しい紹介を一緒に見ていきましょう。 1. MySQL ではなぜ自動インクリメント列 ID を主キーとして設定することを推奨しているのですか?
要約すると、自動インクリメント列を主キーとして使用すると、アクセス効率が最高になります。 2. 自動インクリメント列 ID は必ず連続している必要がありますか? 自動増分 ID の増分は必ずしも連続的ではありません。 まず、MySQL の自動インクリメント値の保存戦略を見てみましょう。
自動増分 ID が不連続になる原因となる状況としては、次のようなものが考えられます。 1. ユニークキーの競合 2. トランザクションのロールバック 3. 自動増分 ID を一括適用する SELECT ステートメントを挿入します。 3.自動増分IDに上限はありますか? 自動インクリメント ID は整数フィールドです。成長 ID を定義するために int 型を使用することが多いのですが、int 型には上限があるため、成長 ID にも上限があります。
上記の表から、自動インクリメントフィールドが int signed 型を使用する場合、最大値は 2147483647 に達し、21 億を超え、int unsigned 型を使用する場合、最大値は 4294967295 に達し、42 億を超えることがわかります。もちろん、bigint はより広い範囲を表すことができます。 次に、自動インクリメント ID が最大値に達し、データを再度挿入すると何が起こるかをテストします。 テーブル t(id int unsigned auto_increment primary key) を作成します。auto_increment=4294967295; t 値に挿入します(null); // 4294967295 行を正常に挿入しました テーブル t の作成を表示します。 /* テーブル `t` を作成する ( `id` int(10) 符号なし NOT NULL AUTO_INCREMENT, 主キー (`id`) )ENGINE=InnoDB AUTO_INCREMENT=4294967295; */ t 値に挿入します(null); //キー 'PRIMARY' の重複エントリ '4294967295' 実験から、自動インクリメント ID が最大値に達すると、拡張できないことがわかります。最初の挿入ステートメントでデータが正常に挿入された後、このテーブルの AUTO_INCREMENT は変更されず (4294967295 のまま)、2 番目の挿入ステートメントで同じ自動インクリメント ID 値が取得されます。挿入ステートメントを再度実行しようとすると、主キーの競合エラーが報告されます。 4. 自動インクリメント列をどのように維持すればよいですか? メンテナンスに関しては、次の 2 つの提案が提供されています。 1. フィールド タイプの選択: int unsigned タイプの使用をお勧めします。テーブル内のデータ量が非常に大きくなることが予想される場合は、代わりに bigint unsigned タイプを使用できます。 2. 主キーのオーバーフローを防ぐために、大きなテーブルの自動インクリメント値にさらに注意を払います。 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。 以下もご興味があるかもしれません:
|
>>: Nginx 1つのドメイン名で複数のプロジェクトにアクセスする方法の例
たとえば、スクリーン リーダー ソフトウェアを必要とするユーザーなどです。フロントエンド開発者として...
第一に: CSSを導入する4つの方法CSS を導入する方法には、インライン スタイル、埋め込みスタイ...
1. コンテナに入るdocker run [オプション] イメージ名 [起動コンテナに渡されるコマン...
1. 2種類のDMAマッピング1.1. 一貫性のあるDMAマッピング主に長期間使用されるエリアをマッ...
1. 理由システムが Centos7.3 の場合、yum install docker を使用して直...
v-model を使用してページング情報オブジェクトをバインドします。ページング情報オブジェクトに...
少し前に、「ORACLE でコミットされていないトランザクションの SQL ステートメントを見つける...
ルートユーザーのパスワードを初期化するプロセスと、よくある2つの問題の解決策が含まれています。 1....
目次イベント駆動型とパブリッシュ・サブスクライブ型ブラウザの JavaScript ではイベント駆動...
mysql の権限とインデックスmysql の最高権限ユーザーは root です。 CREATE U...
通常、国喪の日、大地震の日、清明節には、ウェブサイト全体を灰色にして、故人への哀悼の意を表します。そ...
この記事では、Web ページを作成する前に確認すべき、いわゆる仕様をいくつかまとめました。皆様のお役...
この記事では、Vueを使用してショッピングカートの数量を変更する方法を紹介します。具体的な内容は次の...
これまで、CSS の背景の属性には、color、image、repeat、attachment、po...
1. 公式ウェブサイト www.mysql.com にアクセスし、ダウンロードを選択します。 2. ...