私はMySQLデータベースのクエリを最適化する過程にあります。 Visual Explainを使用していて、さまざまなクエリのコストを見ている間、私は繰り返し、直感的な値を見つけています。より効率的な検索(例えば、キールックアップ)を使用する操作は、表面的に効率の悪い操作(例えば、全テーブルスキャンまたは全インデックススキャン)よりも高いクエリコストを有するように見える。 全表スキャンの照会コストは、キーのルックアップベースのクエリコストの割合である:本のクエリのコストは、MySQLのクエリ最適化に最適なメトリックですか?
例としては、さらにビジュアルthis pageに説明に関するセクションでは、MySQLのマニュアルに見ることができます。私は自分のデータベースで全く同じシナリオを見ます。
これは私にとって完全に逆に思えますが、質問を最適化するときにクエリコストをの標準として使用する必要がありますか?それとも、私は根本的に誤解されたクエリコストを持っていますか?
「実際のパフォーマンス」は通常、最も重要なものです。推定された(実際の)クエリプランは素晴らしいです。一方、関連するクエリを手軽に実行させることは、一般に要件です。 – user2864740
また、私は質問が何を求めているのかよくわかりません。基本FTSのコストは、それがクエリに答えるために必要な情報の一部に過ぎないので、意味がありません。(テーブルに適切なインデックスとデータ量がある場合は、フルスキャンからインデックススキャンに変更する必要があります:このステップでは、効果的に「最初のN [1000]行を作成します」このケースでは、または使用可能なインデックスがありません。) – user2864740
私は、クエリの各ステップが何をしているのか、それがどのようになっているのかを理解しています。私が理解できないことは、例外なく、ほぼ例外なく、クエリプランナーは、常識的にそうでないと指摘された場合、インデックス付きの読み取りは非インデックス化された読み取りよりも高価だと考えていることです。たとえば、私のデータベースでは、フル・テーブル・スキャンを実行しているクエリが見つかったので、適切なインデックスを追加し、プランナがそのインデックスを選択しましたが、EXPLAINはその変更後にクエリコストが**アップ**したことを示しました。 –