当面の問題の詳細な説明がなければ、データベースがどのように機能するかについてのあなたの理解がかなり欠けているように見える以上のことを言うことはできないと思います.
簡単にするために、二分探索木を想像してください。次に、述語 (where 条件) を使用して、クエリの結果を取得するのに役立つ二分探索ツリーを構築する方法を検討します。簡単な例として、次のクエリを検討してください。
SELECT * FROM myTable WHERE some_value = 10
「some_value」の単純な二分探索木 (つまり、二分探索木 - ツリー内の各ノードについて、現在の行よりも低い「some_value」を持つ他の行が左に移動し、それ以上の行または等しい行が左に移動します。 - 値は右に移動します) - この状況で役立ちます。このような二分探索ツリーを利用すると、現在のノードの値に応じてツリーの左または右のパスをたどり、値「10」に到達するまで、ツリーのルートから簡単にたどることができます。より高い値が見つかるまで正しい道をたどってください。
これが次のようなクエリでどのように機能するか想像できます。
SELECT * FROM myTable WHERE some_value BETWEEN 10 AND 20
繰り返しますが、同じ単純な二分探索木でこのクエリに簡単に答えることができます。もちろん、もっと複雑な例に深く入り込むことは簡単にできますが、この時点で、あなたは次のように考えていると思います。
これに対する答えはインデックスです - この場合:
CREATE INDEX idx_myTable__some_value ON myTable(some_value);
これにより、MySQL はテーブル "myTable" の列 (指定された順序) "some_value" にインデックスを作成し、インデックスは "idx_myTable__some_value" という名前になります。
これは、このような簡単な答えでできる限り、このトピックにあると思います。ただし、上記は単純化しすぎていることを述べさせてください。これについては、さらに多くのことが言えます。まず、実際に使用されるインデックスの種類は、通常、二分探索ツリーではなく、B ツリー (または、より可能性が高い) です。 、B+ ツリー)。ウィキペディアにはこれに関する適切な記事がいくつかあり、MySQL の実際のマニュアルもこれを十分にカバーしているはずです。