ホームページ データベース mysql チュートリアル mysqlにはインデックスがありますか?

mysqlにはインデックスがありますか?

Nov 08, 2022 pm 07:28 PM
mysql 索引

mysql にはインデックスがあります。通常、MySQL のデータベース テーブルの行データにアクセスするには 2 つの方法があります。 1. シーケンシャル アクセス。つまり、テーブル内でテーブル全体のスキャンを実行し、条件を満たすターゲット データが見つかるまで最初から最後まで行ごとにスキャンします。条件が順序付けされていない行データ内に見つかった場合; 2. インデックス アクセスは、インデックスをトラバースしてテーブル内のレコード行に直接アクセスすることです。 MySQL インデックスのデータ構造は BTree と Hash の 2 種類に分けられ、BTree は BTree と B Tree に分けることができます。

mysqlにはインデックスがありますか?

このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。

MySQL インデックスとは何ですか?

インデックスは、データ テーブル内の 1 つ以上の列で構成される特別なデータベース構造であり、データ テーブル内の特定の値を持つレコードを迅速にクエリするために使用できます。ここではインデックスの意味や機能、メリット・デメリットについて詳しく解説します。

インデックスを使用してデータをクエリする場合、レコード内のすべての情報を読み取る必要はなく、インデックス列をクエリするだけで済みます。それ以外の場合、データベース システムは照合のために各レコードのすべての情報を読み取ります。

この索引は、新華辞典の発音順序と比較できます。たとえば、「く」という単語を調べたい場合、発音順序を使用しない場合、400 ページの辞書からページごとに検索する必要があります。ただし、ピンインを抽出して発音シーケンスを作成する場合は、10 ページを超える発音表から直接検索するだけで済みます。これにより時間を大幅に節約できます。

したがって、インデックスを使用すると、データベースのクエリ速度が大幅に向上し、データベース システムのパフォーマンスが効果的に向上します。

インデックスを使用する理由

インデックスとは、列の値とレコード行の間の関係を、ある基準に基づいて特定の順序で確立したものです。対応テーブルは基本的に、インデックス列の列値と元のテーブルのレコード行の間の 1 対 1 の対応を記述する順序付けされたテーブルです。

インデックスは MySQL の非常に重要なデータベース オブジェクトであり、データベース パフォーマンス チューニング テクノロジの基礎であり、データの高速な取得を実現するためによく使用されます。

MySQL では、通常、データベース テーブルの行データにアクセスする方法が 2 つあります。

1) シーケンシャル アクセス

シーケンシャル アクセスは、 table 順序付けされていない行データの条件を満たすターゲット データが見つかるまで、最初から最後まで 1 行ずつスキャンして、テーブル全体のスキャンを実行します。

シーケンシャル アクセスは実装が比較的簡単ですが、テーブル内に大量のデータがある場合、効率は非常に低くなります。例えば、数千万のデータの中から少量のデータを検索する場合、シーケンシャルアクセスを行うと全データを横断することになり、時間がかかり、データベースの処理性能に影響を与えるのは明らかです。

2) インデックス アクセス

インデックス アクセスは、インデックスをトラバースしてテーブル内のレコード行に直接アクセスする方法です。

この方法を使用する前提は、テーブルにインデックスを作成することです。列にインデックスを作成した後、データを検索するときに、テーブルのインデックスに基づいて、対応するレコード行の位置を直接見つけることができます。列をクリックすると、データをすばやく見つけることができます。インデックスは、指定された列のデータ値へのポインターを格納し、指定された並べ替え順序に従ってこれらのポインターを並べ替えます。

たとえば、学生基本情報テーブル tb_students で、student_id に基づいてインデックスが設定されている場合、システムはインデックス列から実際のレコードまでのマッピングテーブルを作成します。ユーザーが Student_id 12022 のデータを検索する必要がある場合、システムはまず Student_id インデックスでレコードを検索し、次にマッピング テーブルを通じてデータ行を直接検索し、データ行を返します。一般に、インデックスのスキャン速度は実際のデータ行のスキャン速度よりもはるかに速いため、インデックスを使用するとデータベースの効率が大幅に向上します。

つまり、インデックスを使用せずに、MySQL は最初のレコードから始めて、関連する行が見つかるまでテーブル全体を読み取る必要があります。テーブルが大きくなるほど、データのクエリにかかる時間が長くなります。テーブル内のクエリ対象のカラムにインデックスがある場合、MySQL はすべてのデータを確認することなく、データ ファイルを検索する場所にすぐにアクセスできるため、時間を大幅に節約できます。

MYSQL インデックスの分類

1. 通常インデックスと一意インデックス

  • 通常インデックス: MySQL の基本的なインデックス タイプ。インデックスを定義するカラムに重複値や null 値を挿入できます。

  • 一意のインデックス: インデックス カラムの値は次のとおりである必要があります。一意ですが、NULL 値は許可されます

    • 結合インデックスの場合、列値の組み合わせは一意である必要があります
    • 主キー インデックスは特別な一意のインデックスです

2. 単一列インデックスと複合インデックス

  • 単一列インデックス: インデックスには次の内容のみが含まれます。単一列であり、テーブルには複数の単一列インデックスを持つことができます
  • 結合インデックス: テーブル内で複数のフィールドの組み合わせで作成されたインデックス
    • インデックスは、これらの左側のフィールドが一致する場合にのみ使用されます。フィールドはクエリ条件で使用されます (左端のプレフィックス原則)

3. フルテキスト インデックス

  • フルテキスト インデックスのタイプは次のとおりです。 fulltext
  • は、インデックスを定義する列の値の全文検索をサポートし、これらのインデックス列に重複を挿入できるようにします。値と null 値
  • フルテキスト インデックスは、 char、varchar、text タイプの列に作成されます

4、空間インデックス

  • 空間インデックスは、空間データ型のフィールドに対して確立されたインデックスです。

  • MySQL には、Geometry、Point、および 4 つの空間データ型があります。 Linestring と Polygon

  • MySQL は Spatial キーワードを使用して拡張されており、通常のインデックスの作成と同様の構文を使用して空間インデックスを作成できます

  • 空間インデックスを作成する 列は null 値を許可せず、MyISAM テーブルでのみ作成できます。

5. 接頭辞インデックス

  • char、varchar、および text 型の列にインデックスを作成する場合、インデックス列の長さを指定できます

MySQL インデックスのデータ構造

MySQL インデックスのデータ構造は、BTree とハッシュ、および BTree の 2 種類に分類できます。 BTreeとB-Treeに分けることができます。

ハッシュ: ハッシュ テーブルを使用してデータを保存し、キーはインデックス列を保存し、値は行レコードまたは行ディスク アドレスを保存します。

ハッシュは、等しい値のクエリ ("=、"IN"、"") のみをサポートし、範囲クエリはサポートしません (理由は、ハッシュの各キー間に接続がないためです) )、ハッシュ クエリの効率は非常に高く、時間計算量は O(1) です。

BTree: マルチツリーに属します。マルチウェイバランス検索ツリーとも呼ばれます。

プロパティ:

  • BTree のノードには複数の要素 (キー値 - データ/子ノードのアドレス)が格納されます。
  • BTree ノードのキー値は次のとおりです。非降順で配置
  • BTree すべてのリーフ ノードは同じ層 (同じ深さ) に配置されます

mysqlにはインデックスがありますか?

#たとえばクエリ プロセス: Select * from table where id = 6;

mysqlにはインデックスがありますか?

BTree の欠点:

  • は範囲クエリの高速検索をサポートしていません (各クエリは
  • すべてのノードにデータを保存すると、ディスク データ ストレージが分散し、クエリ効率が低下します。

B ツリー: BTree に基づいて、BTree 最適化を実行します: リーフ ノードのみがキー値データを保存し、非リーフ ノードはキー値と子ノードのアドレスのみを保存します。リーフ ノードは双方向ポインタを使用して接続され、双方向の順序付きリンク リストを形成します。

mysqlにはインデックスがありますか?

等しい値のクエリ、例: Select * from table where id = 8;

mysqlにはインデックスがありますか?

Range クエリ、for例: Select * from table where id between 8 and 22;

mysqlにはインデックスがありますか?

B Tree の利点:

  • 高速な等価クエリと範囲クエリ検索を保証します。
  • 単一ノードにより多くの要素が保存され、IO クエリの数が削減されます

[関連する推奨事項: mysql ビデオ チュートリアル ]

以上が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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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:簡単な学習のためのシンプルな概念 MySQL:簡単な学習のためのシンプルな概念 Apr 10, 2025 am 09:29 AM

MySQLは、オープンソースのリレーショナルデータベース管理システムです。 1)データベースとテーブルの作成:createdatabaseおよびcreateTableコマンドを使用します。 2)基本操作:挿入、更新、削除、選択。 3)高度な操作:参加、サブクエリ、トランザクション処理。 4)デバッグスキル:構文、データ型、およびアクセス許可を確認します。 5)最適化の提案:インデックスを使用し、選択*を避け、トランザクションを使用します。

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

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

Navicatプレミアムの作成方法 Navicatプレミアムの作成方法 Apr 09, 2025 am 07:09 AM

NAVICATプレミアムを使用してデータベースを作成します。データベースサーバーに接続し、接続パラメーターを入力します。サーバーを右クリックして、[データベースの作成]を選択します。新しいデータベースの名前と指定された文字セットと照合を入力します。新しいデータベースに接続し、オブジェクトブラウザにテーブルを作成します。テーブルを右クリックして、データを挿入してデータを挿入します。

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

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

NavicatでMySQLへの新しい接続を作成する方法 NavicatでMySQLへの新しい接続を作成する方法 Apr 09, 2025 am 07:21 AM

手順に従って、NAVICATで新しいMySQL接続を作成できます。アプリケーションを開き、新しい接続(CTRL N)を選択します。接続タイプとして「mysql」を選択します。ホスト名/IPアドレス、ポート、ユーザー名、およびパスワードを入力します。 (オプション)Advanced Optionsを構成します。接続を保存して、接続名を入力します。

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

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

単一のスレッドレディスの使用方法 単一のスレッドレディスの使用方法 Apr 10, 2025 pm 07:12 PM

Redisは、単一のスレッドアーキテクチャを使用して、高性能、シンプルさ、一貫性を提供します。 I/Oマルチプレックス、イベントループ、ノンブロッキングI/O、共有メモリを使用して同時性を向上させますが、並行性の制限、単一の障害、および書き込み集約型のワークロードには適していません。

MySQLおよびSQL:開発者にとって不可欠なスキル MySQLおよびSQL:開発者にとって不可欠なスキル Apr 10, 2025 am 09:30 AM

MySQLとSQLは、開発者にとって不可欠なスキルです。 1.MYSQLはオープンソースのリレーショナルデータベース管理システムであり、SQLはデータベースの管理と操作に使用される標準言語です。 2.MYSQLは、効率的なデータストレージと検索機能を介して複数のストレージエンジンをサポートし、SQLは簡単なステートメントを通じて複雑なデータ操作を完了します。 3.使用の例には、条件によるフィルタリングやソートなどの基本的なクエリと高度なクエリが含まれます。 4.一般的なエラーには、SQLステートメントをチェックして説明コマンドを使用することで最適化できる構文エラーとパフォーマンスの問題が含まれます。 5.パフォーマンス最適化手法には、インデックスの使用、フルテーブルスキャンの回避、参加操作の最適化、コードの読み取り可能性の向上が含まれます。

See all articles