mysql にはインデックスがあります。通常、MySQL のデータベース テーブルの行データにアクセスするには 2 つの方法があります。 1. シーケンシャル アクセス。つまり、テーブル内でテーブル全体のスキャンを実行し、条件を満たすターゲット データが見つかるまで最初から最後まで行ごとにスキャンします。条件が順序付けされていない行データ内に見つかった場合; 2. インデックス アクセスは、インデックスをトラバースしてテーブル内のレコード行に直接アクセスすることです。 MySQL インデックスのデータ構造は BTree と Hash の 2 種類に分けられ、BTree は BTree と B Tree に分けることができます。
このチュートリアルの動作環境: 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 すべてのリーフ ノードは同じ層 (同じ深さ) に配置されます
#たとえばクエリ プロセス: Select * from table where id = 6;
BTree の欠点:
- は範囲クエリの高速検索をサポートしていません (各クエリは
- すべてのノードにデータを保存すると、ディスク データ ストレージが分散し、クエリ効率が低下します。
B ツリー: BTree に基づいて、BTree 最適化を実行します: リーフ ノードのみがキー値データを保存し、非リーフ ノードはキー値と子ノードのアドレスのみを保存します。リーフ ノードは双方向ポインタを使用して接続され、双方向の順序付きリンク リストを形成します。
等しい値のクエリ、例: Select * from table where id = 8;
Range クエリ、for例: Select * from table where id between 8 and 22;
B Tree の利点:
- 高速な等価クエリと範囲クエリ検索を保証します。
- 単一ノードにより多くの要素が保存され、IO クエリの数が削減されます
[関連する推奨事項: mysql ビデオ チュートリアル ]
以上がmysqlにはインデックスがありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

如何在Window11上修复100%的磁盘使用率查找导致100%磁盘使用的有问题的应用程序或服务的直接方法是使用任务管理器。要打开任务管理器,请右键单击开始菜单并选择任务管理器。单击磁盘列标题,查看占用最多资源的内容。从那里开始,您将很好地了解从哪里开始。但是,问题可能比仅仅关闭应用程序或禁用服务更严重。继续阅读以查找问题的更多潜在原因以及如何解决这些问题。禁用SuperfetchSuperfetch功能(在Windows11中也称为SysMain)有助于通过访问预取文件来减少启动时

<h2>如何在Windows11上从搜索中隐藏文件和文件夹</h2><p>我们首先要看的是自定义Windows搜索文件的位置。通过跳过这些特定位置,您应该可以更快地看到结果,同时还可以隐藏您想要保护的任何文件。</p><p>如果要从Windows11上的搜索中排除文件和文件夹,请使用以下步骤:</p><ol&

如果您的搜索栏在Windows11中不起作用,有几种快速方法可以立即启动并运行!任何微软操作系统有时都可能遇到故障,最新的操作系统不能免除该规则。此外,正如Reddit上的用户u/zebra_head1所指出的那样,同样的错误出现在Windows11的22H2Build22621.1413上。用户抱怨切换任务栏搜索框的选项随机消失。因此,您必须为任何情况做好准备。为什么我无法在计算机上的搜索栏中键入内容?无法在计算机上键入可归因于不同的因素和过程。以下是您应该注意的一些事项:Ctfmon.

在Outlook中运行搜索和索引疑难解答您可以开始的更直接的修复之一是运行搜索和索引疑难解答。要在Windows11上运行疑难解答,请执行以下操作:单击开始按钮或按Windows键并从菜单中选择设置。当设置打开时,选择系统>疑难解答>其他疑难解答。在右侧向下滚动,找到SearchandIndexing,然后单击Run按钮。选择Outlook搜索不返回结果并继续屏幕上的说明。当您运行它时,疑难解答程序将自动识别并修复问题。运行疑难解答后,打开Outlook并查看搜索是否正常。如

如何通过索引提升PHP与MySQL的数据分组和数据聚合的效率?引言:PHP和MySQL是目前应用最广泛的编程语言和数据库管理系统,常常被用于构建web应用程序和处理大量数据。在处理大量数据时,数据分组和数据聚合是常见的操作,但如果不合理地设计和使用索引,这些操作可能会变得非常低效。本文将介绍如何通过索引来提升PHP与MySQL的数据分组和数据聚合的效率,并提

作为一种常用的关系型数据库,MySQL在今天的互联网应用中扮演着至关重要的角色。而在MySQL优化策略中,索引的使用更是至关重要。在MySQL中,索引是一种数据结构,用于快速定位数据中的特定行。使用索引可以大大提高查询效率,减少数据库处理数据的时间和资源。但不正确的索引使用方式,同样会导致数据库性能的下降。下面我们来深入剖析MySQL索引的优化策略,帮助您更

数组是以有组织的方式存储的同类数据元素的集合。数组中的每个数据元素都由一个索引值来标识。Python中的数组Python没有原生的数组数据结构。因此,我们可以使用列表数据结构来替代数组。[10,4,11,76,99]同时我们可以使用PythonNumpy模块来处理数组。由numpy模块定义的数组是−array([1,2,3,4])Python中的索引从0开始,因此可以使用各自的索引值来访问上述数组元素,如0、1、2、直到n-1。在下面的文章中,我们将看到在指定索引处插入多个元素的不同方法。输入输

在Windows11上管理搜索索引我们已经向您展示了如何从搜索中隐藏文件和文件夹。但是,您可以管理其他方面,例如在经典索引或增强索引之间切换、禁用内容索引或完全禁用索引。要在Windows11上管理搜索索引,请使用以下步骤:单击“开始”按钮或按Windows键以启动“开始”菜单并单击“设置”。或者,您可以使用键盘快捷键Window键+I直接启动设置。当设置打开时,单击左侧列表中的隐私和安全。向下滚动右侧的列表,然后单击Windows权限部分下的搜索Windows。接下来,展开


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

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

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
