ホームページ データベース mysql チュートリアル MySQL-uuidを主キーとした場合とintを主キーとした場合のパフォーマンス測定比較の詳細説明

MySQL-uuidを主キーとした場合とintを主キーとした場合のパフォーマンス測定比較の詳細説明

May 21, 2018 am 10:56 AM

偶然、mysql主キー型はUUIDの格納にvarcharを使用しており、queryパフォーマンスがint型の主キーほど良くないことを知りました。インターネット上の多くの情報は理論上のものにすぎません。したがって、以下の結果は参考用であり、信頼できるものではありません。

3 つのテーブルのフィールドは、主キー ID がそれぞれ varchar、bigint、自動インクリメント bigint を使用することを除き、他の 3 つのフィールドはすべて varchar 36 ビットです

データベース: mysql5.5

テーブルタイプ: InnoDB

データ量: 100W アイテム

最初のケース:

主キーは uuid 32 ビットを使用します。

クエリ ステートメント 1 の実行: SELECT COUNT(id) FROM test_varchar;

クエリ ステートメント 2 の実行: SELECT * FROM test_varchar WHERE vname='00004629-b052-11e1-96aa-002655b28d7b';

クエリ ステートメント 3 の実行: SELECT * FROM test_varchar WHERE id='00004599b05211e196aa002655b28d7b';

ステートメント 1 の平均時間は 2.7 秒、

ステートメント 3 の平均時間は 0 秒です。秒; (マルチパーティテスト、条件に主キー ID がある限り、ミリ秒単位のクエリ速度は 000 になります。テストされる ID 値には、最初の 100 と最後の 900,000 が含まれます。クエリ時間は全く同じで、ミリ秒レベルは 000)

2 つの状況:

主キーは bigint

を使用し、データは純粋な数値のシーケンス (22461015967875697) を使用します。 (固定ベース値が大きいことを除いて、自動拡張と同等です。) クエリ ステートメント 1 の実行: SELECT COUNT(id) FROM test_long; クエリ ステートメント 2 の実行: SELECT * FROM test_long WHERE vname='d7f28a24- b053 -11e1-96aa-002655b28d7b';

クエリ ステートメント 3 を実行します: SELECT * FROM test_long WHERE id='22461015967875702';

ステートメント 1 にかかる平均時間は次のとおりです:

ステートメント 2 にかかる平均時間は 1.2 秒です。ステートメント 3 の平均消費時間は 0 秒です (マルチパーティ テスト、条件に主キー ID がある限り、クエリ速度はミリ秒単位で 000 と表示されます)値の範囲は最初の 100 から 900,000 を超えます) クエリ時間はまったく同じで、ミリ秒レベルは 000)

3 番目のケース:

クエリ ステートメント 1: SELECT COUNT(id) FROM test_int ;

クエリ ステートメント 2 の実行: SELECT * FROM test_int WHERE vname= 'c80f8427-b059-11e1-96aa-002655b28d7b'; クエリ ステートメント 3 の実行: SELECT * FROM test_int WHERE id=900000;

主キーは次を使用します。 mysql

に付属する自動拡張機能であり、データは純粋な数値 (1、2、3、4、5...) です。

クエリ ステートメント 1 の平均所要時間: 1.07 秒;

クエリ ステートメント 2 の平均所要時間: 1.31 秒; クエリ ステートメント 3 の平均所要時間: 0 秒条件に主キー ID がある限り、クエリ速度はミリ秒単位で 000 を示します。テストされた ID 値には最初の 100 と最後の 900,000 が含まれており、クエリ時間はまったく同じです。 all 000)

概要

: Mysql InnoDB の主キーは自動拡張を採用し、パフォーマンスが向上していることがわかります。

筆者の独り言: 通常のプロジェクト開発では、SQL文の条件にIDがあるものが多数派であり、IDがないものが少数派である。上記のテストでは、条件ステートメントに主キー ID がある限り、主キーの種類に関係なく、クエリ時間はまったく同じであることがわかります。ただし、プロジェクト内のすべての SQL ステートメントの条件に ID があることを保証することはできません。そのため、どのタイプの主キーを使用する必要があるかはすでに理解していると思います。 データベース: mysql5.5

テーブルタイプ: MyISAM

データ量: 100W 項目

書く単語を減らして時間を節約するために、テーブルこの中で使われているtest SQL ステートメントと同様に、ここでは消費時間のみが記録されます。

最初のケース:

主キーは uuid 32 ビットを使用します。

ステートメント 1 の平均時間は 0 秒、

ステートメント 2 の平均時間は 0.53 秒、 ステートメント 3 の平均時間は 0 秒です。条件に主キー ID がある限り、クエリ速度はミリ秒レベルで 000 を示します。テストされた ID 値には、最初の 100 と最後の 900,000 が含まれます。クエリ時間はまったく同じで、ミリ秒レベルは次のようになります。 all 000)

2 番目のケース:

主キー。bigint

を使用し、uuid_short() を使用してデータを生成します (22461015967875697)。 (固定ベース値が大きいことを除いて、自動拡張と同等です。) ステートメント 1 の平均消費時間は 0 秒です。

ステートメント 2 の平均消費時間は 0.51 秒です。

ステートメント 3 の平均消費時間は次のとおりです。 (マルチパーティ テスト。条件に主キー ID がある限り、クエリ速度はミリ秒単位で 000 と表示されます。テストされた ID 値の範囲は、最初の 100 から 900,000 を超えるまではクエリ時間はまったく同じで、ミリ秒レベルは 000)

3 番目のケース:

主キーは mysql に付属する自動拡張を使用しており、データは純粋です数字 (1、2、3、4、5...) 。

ステートメント 1 の平均時間は 0 秒です。

ステートメント 2 の平均時間は 0.48 秒です。条件に主キー ID があるため、クエリ速度はミリ秒です。テスト ID 値の範囲は最初の 100 から 900,000 を超えます。クエリ時間はまったく同じで、ミリ秒レベルは 000) です。概要: mysql MyISAM の主キーは自動を使用していることがわかります。成長パフォーマンスは他のものよりわずかに優れています。テストデータが 1000W 100000000 であれば、外部キー関連のクエリもあれば、この利点はさらに顕著になると思います。もちろん、設計するシステムのデータ量が 100 万を超えない場合は、使用する主キーの種類は関係ありません。私のテスト コンピュータはラップトップです。プロ用サーバーの場合、これらの mysql MyISAM のテストでは時間差をまったく測定できません。

以上がMySQL-uuidを主キーとした場合とintを主キーとした場合のパフォーマンス測定比較の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

MySQLの役割:Webアプリケーションのデータベース MySQLの役割:Webアプリケーションのデータベース Apr 17, 2025 am 12:23 AM

WebアプリケーションにおけるMySQLの主な役割は、データを保存および管理することです。 1.MYSQLは、ユーザー情報、製品カタログ、トランザクションレコード、その他のデータを効率的に処理します。 2。SQLクエリを介して、開発者はデータベースから情報を抽出して動的なコンテンツを生成できます。 3.MYSQLは、クライアントサーバーモデルに基づいて機能し、許容可能なクエリ速度を確保します。

DockerによるMySQLを開始する方法 DockerによるMySQLを開始する方法 Apr 15, 2025 pm 12:09 PM

DockerでMySQLを起動するプロセスは、次の手順で構成されています。MySQLイメージをプルしてコンテナを作成および起動し、ルートユーザーパスワードを設定し、ポート検証接続をマップしてデータベースを作成し、ユーザーはすべての権限をデータベースに付与します。

Laravelは紹介例 Laravelは紹介例 Apr 18, 2025 pm 12:45 PM

Laravelは、Webアプリケーションを簡単に構築するためのPHPフレームワークです。次のような強力な機能を提供します。インストール:Laravel CLIを作曲家にグローバルにインストールし、プロジェクトディレクトリにアプリケーションを作成します。ルーティング:ルート/web.phpのURLとハンドラーの関係を定義します。ビュー:リソース/ビューでビューを作成して、アプリケーションのインターフェイスをレンダリングします。データベース統合:MySQLなどのデータベースとのすぐ外側の統合を提供し、移行を使用してテーブルを作成および変更します。モデルとコントローラー:モデルはデータベースエンティティを表し、コントローラーはHTTP要求を処理します。

データベース接続の解決問題:Minii/DBライブラリを使用する実用的なケース データベース接続の解決問題:Minii/DBライブラリを使用する実用的なケース Apr 18, 2025 am 07:09 AM

小さなアプリケーションを開発する際には、軽量データベース操作ライブラリをすばやく統合する必要性という厄介な問題に遭遇しました。複数のライブラリを試した後、私はそれらがあまりにも多くの機能を持っているか、あまり互換性がないかのどちらかであることがわかりました。最終的に、私は問題を完全に解決したYii2に基づいた単純化されたバージョンであるMinii/DBを見つけました。

Laravel Frameworkインストール方法 Laravel Frameworkインストール方法 Apr 18, 2025 pm 12:54 PM

記事の概要:この記事では、Laravelフレームワークを簡単にインストールする方法について読者をガイドするための詳細なステップバイステップの指示を提供します。 Laravelは、Webアプリケーションの開発プロセスを高速化する強力なPHPフレームワークです。このチュートリアルは、システム要件からデータベースの構成とルーティングの設定までのインストールプロセスをカバーしています。これらの手順に従うことにより、読者はLaravelプロジェクトのための強固な基盤を迅速かつ効率的に築くことができます。

MySQLをCentos7にインストールする方法 MySQLをCentos7にインストールする方法 Apr 14, 2025 pm 08:30 PM

MySQLをエレガントにインストールするための鍵は、公式のMySQLリポジトリを追加することです。特定の手順は次のとおりです。MYSQLの公式GPGキーをダウンロードして、フィッシング攻撃を防ぎます。 mysqlリポジトリファイルを追加:rpm -uvh https://dev.mysql.com/get/mysql80-community-rease-el7-3.noarch.rpm update yumリポジトリキャッシュ:yumアップデートインストールmysql:yumインストールmysql-server startup mysql sportin

MySQLおよびPHPMYADMIN:コア機能と関数 MySQLおよびPHPMYADMIN:コア機能と関数 Apr 22, 2025 am 12:12 AM

MySQLとPHPMyAdminは、強力なデータベース管理ツールです。 1)MySQLは、データベースとテーブルを作成し、DMLおよびSQLクエリを実行するために使用されます。 2)PHPMyAdminは、データベース管理、テーブル構造管理、データ操作、ユーザー許可管理のための直感的なインターフェイスを提供します。

Centosはmysqlをインストールします Centosはmysqlをインストールします Apr 14, 2025 pm 08:09 PM

CentOSにMySQLをインストールするには、次の手順が含まれます。適切なMySQL Yumソースの追加。 yumを実行して、mysql-serverコマンドをインストールして、mysqlサーバーをインストールします。ルートユーザーパスワードの設定など、MySQL_SECURE_INSTALLATIONコマンドを使用して、セキュリティ設定を作成します。必要に応じてMySQL構成ファイルをカスタマイズします。 MySQLパラメーターを調整し、パフォーマンスのためにデータベースを最適化します。

See all articles