おそらく、MySqlにクエリプランを決定させるほうがよいでしょう。インデックススキャンを実行すると、全表スキャンよりも効率が低下する可能性があります。
このテーブルのディスクには2つのデータ構造があります
- テーブル自体。および
- 主キーのBツリーインデックス。
クエリを実行する場合、オプティマイザにはデータへのアクセス方法に関する2つのオプションがあります。
SELECT * FROM userapplication WHERE application_id > 1025;
インデックスの使用
- Bツリーインデックスをスキャンして、
application_id > 1025
であるすべての行のアドレスを見つけます - 表の適切なページを読んで、これらの行のデータを取得します。
インデックスを使用しない
テーブル全体をスキャンして、適切なレコードを選択します。
最適な戦略の選択
クエリオプティマイザの仕事は、必要なデータを取得するための最も効率的な戦略を選択することです。 application_id > 1025
の行がたくさんある場合 その場合、実際にはインデックスを使用する効率が低下する可能性があります。たとえば、レコードの90%にapplication_id > 1025
がある場合 次に、クエリオプティマイザは、bツリーインデックスのリーフノードの約90%をスキャンしてから、テーブルの少なくとも90%を読み取って、実際のデータを取得する必要があります。これには、テーブルをスキャンするだけでなく、ディスクからより多くのデータを読み取ることが含まれます。