実際の開発では、MySQL の主キーは重複できず、主キーが自動的にインクリメントされることがあります。主キーの重複を防ぐために、スノーフレーク アルゴリズムなどのアルゴリズムが採用されることがあります。どちらのタイプの主キーも数値型として保存されますが、実際の開発では、uuid が主キーとして生成されることがあります。では、どちらの主キーの方が効率的でしょうか。 テストによって次のことが検証されます。 1. まず、テーブルを作成し、ストアド プロシージャを使用して 100 万個のデータを生成し、分析します。 テーブルを作成します。 テーブル `my_tables` を作成します ( `id` VARCHAR(32) NOT NULL , `name` varchar(32) デフォルト NULL, `age` int(32) デフォルト NULL, `time` varchar(32) デフォルト NULL, `pwd` varchar(32) デフォルト NULL, 主キー (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=5 デフォルトCHARSET=utf8; ストアド プロシージャを作成します。 my_insert が存在する場合はプロシージャを削除します。 プロシージャ my_insert() を作成する 始める n int DEFAULT 1 を宣言します。 ループ名:LOOP `my_tables`(`name`,`age`,`time`,`pwd`) に VALUES ('张三', 18, '0:0:0:0:0:0:0:1', '369') を挿入します。 n=n+1 を設定します。 n=1000000の場合 LEAVE ループ名; 終了の場合; END LOOP ループ名; 終わり; データの生成: my_insert() を呼び出します。 最初の方法では、数値型の主キーを使用します。 次の図は分析を説明すると得られる。 2. 次に、別のテーブルを作成し、データを生成します。 テーブル `my_tables2` を作成します ( `id` VARCHAR(32) NOT NULL , `name` varchar(32) デフォルト NULL, `age` int(32) デフォルト NULL, `time` varchar(32) デフォルト NULL, `pwd` varchar(32) デフォルト NULL, 主キー (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=5 デフォルトCHARSET=utf8; 注: このテーブルの主キーは varchar 型です。 ストアド プロシージャを作成し、データを生成します。 proc_insert が存在する場合はプロシージャを削除します。 区切り文字 $ プロシージャ pro_insert2() を作成します。 始める i INT DEFAULT 1 を宣言します。 i<=1000000の間 `my_tables2`(id,`name`,`age`,`time`,`pwd`) に VALUES (i,'张三', 18, '0:0:0:0:0:0:0:1', '369') を挿入します。 i = i+1 を設定します。 終了しながら; 終了$; pro_insert2() を呼び出します。 次の図は、主キーを使用した2番目のクエリの結果を示しています。 説明が理解できない場合は、ブログをご覧ください https://blog.csdn.net/why15732625998/article/details/80388236 分析により、uuid または数値を主キーとして使用した場合のクエリ効率の違いは予想ほど大きくなく、ほとんど無視できることがわかりました。key_len のみがわずかに異なります。 key_len: インデックスで使用されるバイト数を示します。この列は、クエリで使用されるインデックスの長さを計算するために使用できます。 これで、MySQL の主キーに数値を使用するか UUID を使用するかのどちらが速いかについての記事は終了です。MySQL の主キーに数値を使用するか UUID を使用するかの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: 面白いウェブサイトをデザインするための方法とテクニック(写真)
>>: CSS3+JavaScript を使用したクールな呼吸効果のサンプル コード
目次序文webSocket の操作と例について:ウェブソケット1. webSocketについて2. ...
序文Samba は、サーバー プログラムとクライアント プログラムで構成され、Linux システム上...
乱雑なログ日常的に使用される Nginx は、静的リソース サーバーとリバース プロキシ サーバーの...
目次1. 準備2. 減圧3. 統合を開始する1. 準備Ckeditor_4.5.7_full + C...
要件は、製品の評価データを渡すことであり、ページには対応する星の数が表示されます。 1. 異なる評価...
日常業務では、実行に時間のかかる SQL ステートメントを記録するために、スロー クエリを実行するこ...
tomcat7 のデフォルトのプログラム公開パスは tomcat/webapps/ROOT/ です。...
序文何年も前、私はサーバー側の初心者でしたが、業界の競争が激しくなるにつれて、フロントエンドの初心者...
プロジェクトでは、データを操作するためにバッチ操作ステートメントが必要になることがよくあります。バッ...
概要: HBase には、ユーザーに管理、分析、修復、デバッグ機能を提供するための多くの操作および保...
この記事では、MySQL インストールの詳細なチュートリアルを記録し、全員と共有します。 1. バー...
序文このプロジェクトでは円形のメニューが必要です。オンラインで検索しましたが、適切なものが見つからな...
序文データベースの実際の使用では、データの書き込みや読み取りを同時に行わないことが必要な状況によく遭...
この記事では、期間限定フラッシュセール機能を実装するためのJavaScriptの具体的なコードを参考...
Docker はますます多くのシナリオで使用されています。コマンドラインツールに慣れていない人にとっ...