目次
1. クラスタード インデックスとは
2. クラスター化インデックスと主キー
3. クラスター化インデックスの利点と欠点
ホームページ データベース mysql チュートリアル MySQL クラスター化インデックスの長所と短所は何ですか

MySQL クラスター化インデックスの長所と短所は何ですか

May 27, 2023 pm 09:43 PM
mysql

1. クラスタード インデックスとは

データベース インデックスはさまざまな観点からさまざまな種類に分類できますが、クラスタード インデックスもその 1 つです。

クラスタードインデックスは英語でClustered Indexといい、クラスタードインデックスなどと呼んでいる人も時々見かけますが、その反対はノンクラスタードインデックス、セカンダリインデックスです。

クラスター化インデックスは個別のインデックス タイプではなく、データを保存する方法の 1 つです。 MySQL の InnoDB ストレージ エンジンでは、いわゆるクラスター化インデックスは、実際にはインデックスとデータ行を同じ B ツリーに保存します。 この時点で、データはリーフ ノードに配置され、クラスター化され、クラスター化されます。これは、前述のデータ行を意味します。と対応するキー値がコンパクトにまとめて存在します。

次のデータがあるとします:

2ac##男3af88北京女4bc80上海女5bg85重慶bwbwccck cx
id ​​(主キー) username age 住所 性別
1 ab 99 深セン
##98 广州
#女 6
95 天津 男性 7
99 海口 8
92 武汉 男性 9
90 深セン 男性 10
93 深セン 男性

そのクラスター化インデックスはおそらく次のようになります:

MySQL クラスター化インデックスの長所と短所は何ですか

# すると、主キー値 (インデックス) とデータ行の両方がリーフにあることがわかります。 . ノードには主キー値(インデックス)のみが存在します。

考えてみてください、MySQL テーブルのデータはディスク上に 1 つのコピーにのみ保存でき、2 つのコピーを保存することは不可能です。したがって、テーブル内にはクラスター化されたデータは 1 つだけ存在できます。インデックスを 1 つだけ持つことは不可能です。複数。

2. クラスター化インデックスと主キー

友人の中には、この 2 つの関係をよく理解しておらず、この 2 つを同一視している人もいますが、これは大きな誤解です。

一部のデータベースでは、開発者はクラスタ化インデックスとして使用するインデックスを自由に選択できますが、MySQL はこの機能をサポートしていません。

MySQL では、テーブル自体に主キーが設定されている場合、主キーはクラスター化インデックスになります。テーブル自体に主キーが設定されていない場合、テーブル内の一意の空でないインデックスは、 ; テーブル内に一意の空でないインデックスがない場合、テーブル内の暗黙的な主キーがクラスター化インデックスとして自動的に選択されます。 Brother Song は、今後の記事で MySQL テーブルの暗黙的な主キーについて紹介する予定です。

ただし、一般的には、テーブルの主キーを自分で設定することをお勧めします。暗黙の主キーは自動インクリメントされ、自動インクリメントには問題があるためです。非常に高い自動インクリメント値になります。ロック競合の問題では、主キーの上限はホット データと呼ばれます。すべての挿入操作では主キーをインクリメントする必要があり、繰り返すことができないため、ロック競合が発生し、パフォーマンスが低下します。 。

上記の説明に基づいて、MySQL のクラスター化インデックスと主キー インデックスの関係を次のように要約できます。

  • クラスター化インデックスは必ずしも主キーインデックス。

  • 主キー インデックスはクラスター化インデックスである必要があります。

3. クラスター化インデックスの利点と欠点

最初に利点について話しましょう:

  • 相互に関連するデータを組み合わせることができます。それを一緒に。たとえば、ユーザー注文テーブルがあります。ユーザー ID 注文 ID に基づいてすべてのデータを集計できます。ユーザー ID は繰り返される場合がありますが、注文 ID は繰り返されません。このようにして、すべてのデータを集計できます。ユーザーに関連する注文データをまとめて保存すると、ユーザーのすべての注文をクエリする必要がある場合、非常に高速で、少量のディスク IO のみが必要になります。

  • テーブルを返す必要がないため、データ アクセスが高速になります。クラスター化インデックスでは、インデックスとデータの両方が同じ B ツリー上にあるため、クラスター化インデックスからのデータの取得は、非クラスター化インデックスからのデータの取得よりも高速です (非クラスター化インデックスにはテーブル バッキングが必要です)。

  • 最初のケースでは、ユーザー ID に基づいてこのユーザーのすべての注文 ID をクエリする場合、現時点ではリーフ ノードに移動する必要はありません。ブランチノードには必要なデータがあるため、カバーインデックスの特性を直接使用して必要なデータを読み取ることができます。

これらはクラスター化インデックスの一般的な利点の一部であり、実際、日常のテーブル設計ではこれらの利点を最大限に活用する必要があります。

欠点を見てみましょう:

  • 私の友人は、前に述べたクラスター化インデックスの利点は主に、クラスター化インデックスによって IO の数が削減されることであることに気付きました。これにより、データベースのパフォーマンスが向上しますが、一部の IO 集約型アプリケーションでは、操作のためにすべてのデータをメモリに読み込むのに十分な大きさのメモリを直接ロードする場合があります。この場合、クラスター化インデックスには利点がありません。

  • ランダムな主キーはページ分割の問題を引き起こします。主キーを順番に挿入すると、B ツリーでは最後に追加し続けるだけで済むため、比較的効率的になります。 ; ただし、主キーが非順次挿入の場合、ページ分割が含まれる可能性があるため、効率は大幅に低下します。上の図を例として、各ノードが 3 つのデータを保存できると仮定し、主キー 4.5 を持つレコードを挿入したい場合は、主キー 5 の値を戻す必要があります。これにより、主キーが 8 のノードも元に戻ります。ページを分割すると、データ挿入の効率が低下し、より多くの記憶域スペースが必要になります。

  • 非クラスター化インデックス (セカンダリ インデックス) をクエリする場合は、テーブルを返す必要があります。インデックスはインデックス ツリーであり、データはすべてクラスター化インデックス上にあるため、非クラスター化インデックスを使用して検索する場合、非クラスター化インデックスのリーフには主キー値が格納されます。最初に主キー値を検索します。次に、主キー値がクラスタード・インデックスで検索され、合計 2 つのインデックス・ツリーが照会され、これがテーブルの戻り値となります。

以上がMySQL クラスター化インデックスの長所と短所は何ですかの詳細内容です。詳細については、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)

phpmyadminを開く方法 phpmyadminを開く方法 Apr 10, 2025 pm 10:51 PM

次の手順でphpmyadminを開くことができます。1。ウェブサイトコントロールパネルにログインします。 2。phpmyadminアイコンを見つけてクリックします。 3。MySQL資格情報を入力します。 4.「ログイン」をクリックします。

MySQL:世界で最も人気のあるデータベースの紹介 MySQL:世界で最も人気のあるデータベースの紹介 Apr 12, 2025 am 12:18 AM

MySQLはオープンソースのリレーショナルデータベース管理システムであり、主にデータを迅速かつ確実に保存および取得するために使用されます。その実用的な原則には、クライアントリクエスト、クエリ解像度、クエリの実行、返品結果が含まれます。使用法の例には、テーブルの作成、データの挿入とクエリ、および参加操作などの高度な機能が含まれます。一般的なエラーには、SQL構文、データ型、およびアクセス許可、および最適化の提案には、インデックスの使用、最適化されたクエリ、およびテーブルの分割が含まれます。

MySQLの場所:データベースとプログラミング MySQLの場所:データベースとプログラミング Apr 13, 2025 am 12:18 AM

データベースとプログラミングにおけるMySQLの位置は非常に重要です。これは、さまざまなアプリケーションシナリオで広く使用されているオープンソースのリレーショナルデータベース管理システムです。 1)MySQLは、効率的なデータストレージ、組織、および検索機能を提供し、Web、モバイル、およびエンタープライズレベルのシステムをサポートします。 2)クライアントサーバーアーキテクチャを使用し、複数のストレージエンジンとインデックスの最適化をサポートします。 3)基本的な使用には、テーブルの作成とデータの挿入が含まれ、高度な使用法にはマルチテーブル結合と複雑なクエリが含まれます。 4)SQL構文エラーやパフォーマンスの問題などのよくある質問は、説明コマンドとスロークエリログを介してデバッグできます。 5)パフォーマンス最適化方法には、インデックスの合理的な使用、最適化されたクエリ、およびキャッシュの使用が含まれます。ベストプラクティスには、トランザクションと準備された星の使用が含まれます

なぜMySQLを使用するのですか?利点と利点 なぜMySQLを使用するのですか?利点と利点 Apr 12, 2025 am 12:17 AM

MySQLは、そのパフォーマンス、信頼性、使いやすさ、コミュニティサポートに選択されています。 1.MYSQLは、複数のデータ型と高度なクエリ操作をサポートし、効率的なデータストレージおよび検索機能を提供します。 2.クライアントサーバーアーキテクチャと複数のストレージエンジンを採用して、トランザクションとクエリの最適化をサポートします。 3.使いやすく、さまざまなオペレーティングシステムとプログラミング言語をサポートしています。 4.強力なコミュニティサポートを提供し、豊富なリソースとソリューションを提供します。

Apacheのデータベースに接続する方法 Apacheのデータベースに接続する方法 Apr 13, 2025 pm 01:03 PM

Apacheはデータベースに接続するには、次の手順が必要です。データベースドライバーをインストールします。 web.xmlファイルを構成して、接続プールを作成します。 JDBCデータソースを作成し、接続設定を指定します。 JDBC APIを使用して、接続の取得、ステートメントの作成、バインディングパラメーター、クエリまたは更新の実行、結果の処理など、Javaコードのデータベースにアクセスします。

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

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

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

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

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

See all articles