インデックスを使用するとクエリ速度がすぐに向上するため、インデックスを使用しない場合、mysql は最初のレコードから開始し、関連する行が見つかるまでテーブル全体を読み取る必要があります。
テーブルが大きくなるほど、時間はかかりますが、完全ではありません。
推奨コース: MySQL チュートリアル
インデックスはデータ構造です;
したがって、データベース システムは、データに加えて、特定の検索アルゴリズムを満たすデータ構造も維持しており、これらのデータ構造は何らかの方法でデータを参照 (ポイント) するため、これらのデータ構造上に高度な検索アルゴリズムを実装できます。このデータ構造がインデックスです。
インデックス データ構造分析
このインデックスの構造は何ですか?言い換えれば、なぜこの構造により検索速度が向上するのでしょうか。
1. インデックスがない場合、特定のレコードを検索するとき (たとえば、name='wish' を検索する場合)、レコードが 1 つだけ存在するという保証はないため、すべてのレコードを検索する必要があります。
2. name にインデックスが作成されている場合、mysql はテーブル全体の検索を実行し、各レコードの name 値を昇順で検索して、インデックスを構築します。エントリ (名前と行 ID) をインデックス セグメントに格納し、名前が希望の場合にクエリを実行すると、該当する場所を直接検索できます
3. インデックスを作成したからといって、必ずそれが使用されるわけではありません。 MySQL はテーブルの情報を自動的にカウントした後、インデックスを使用するかどうかを決定します。テーブル内のデータが非常に少ない場合、フル テーブル スキャンの速度はすでに高速であり、すぐにインデックスを使用する必要がなくなります。
#インデックスの動作メカニズムを説明する例#テーブル A
#id,name
## には 2 つのフィールドがあります#テーブルには現在 1,000 万個のデータがあります要件: 名前に基づいて対応する ID をクエリします
インデックスがない場合は、すべてのレコードをクエリする必要がありますテーブルに1,000万件のレコードを入れる必要がある データを1つずつチェックする必要がある 遅いか遅くないかはあなた次第
次に、名前に基づいてインデックスを作成します。
インデックス テーブル構造:
id,name,value
ここで、値はテーブル A の ID であり、json 配列に格納されます (複数の名前も同じ状況が存在します);
その後、ソート規則に従って名前をソートできます。アルゴリズムに従って、インデックス テーブル内の名前の位置を直接特定し、レコードをテーブルAのidを取り出すことができます。
つまり、インデックスを作成すると、テーブル A のレコードに直接アクセスできるようになります。
もちろん高速です。テーブル A にクエリを実行するには、1,000 万件のデータをクエリする必要があります。インデックスを作成することで、アルゴリズムによってクエリ量が大幅に削減されます。
以上がなぜmysqlにはインデックスが必要なのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。