9

私はかなり複雑なWebサイト(PHP駆動)でMySQLを使用しています。

理想的には、使用しているSQLクエリをテストし、パフォーマンスを向上させ、テーブルスキャンを回避するより優れたテーブルインデックスを提案するのに役立つツールがあります。

それができない場合は、各クエリが何をしているのかを正確に教えてくれるので、自分で最適化を実行できます。

編集:EXPLAINからの出力を理解するための簡単なガイド...も役立ちます。

ありがとうございました。

4

6 に答える 6

21

EXPLAIN に関する情報を次に示します (O'Reilly の High Performance MySQL book から参照)。

クエリで EXPLAIN を実行すると、そのクエリについて MySQL が認識しているすべての情報が、クエリに含まれる各テーブルのレポートの形式で表示されます。

これらのレポートのそれぞれが教えてくれます...

  • テーブルの ID (クエリ内)
  • より大きな選択におけるテーブルの役割 (該当する場合、テーブルが 1 つしかない場合は SIMPLE と言うだけかもしれません)
  • テーブルの名前 (当たり前)
  • 結合タイプ (該当する場合、デフォルトはconst )
  • テーブルのインデックスのリスト (ない場合は NULL)、possible_keys
  • MySQL が使用することを決定したインデックスの名前、キー
  • キー値のサイズ (バイト単位)
  • refは、キーとの照合に使用される列または値を示します
  • rowsは、MySQL がクエリを満たすために調べる必要があると考える行の数です。これは、計算された最小値にできるだけ近づける必要があります。
  • ...次に、MySQL が伝えたい追加情報

この本は、このような情報を提供するのに非常に優れているので、まだ購入していない場合は、上司に購入を承認してもらいます.

そうでなければ、より知識のあるSOユーザーが助けてくれることを願っています:)

于 2008-09-26T18:34:23.733 に答える
4

As a simplest thing, enable Slow Query Log and see what queries are slow, then try to analyze them as suggested.

于 2008-09-24T15:08:15.283 に答える
3

おそらくクエリアナザがありますが、最初の簡単なカットにはmysqlコマンドラインを使用し、「explain select * from foo where bar='abc'」と入力します。最も一般的なクエリがインデックスを使用していることを確認し、シーケンシャルスキャンや大きなテーブルの並べ替えを避けてください。

于 2008-09-24T14:52:48.487 に答える
3

EverSQL https://www.eversql.com

遅いクエリを分析してインデックスを生成し、いくつかのヒントを提供します。

于 2020-05-30T20:52:27.097 に答える
1

あらゆる種類の MySQL タスクを実行するためのオープン ソース ツールキットであるMaatkitを調べる必要があります。何をチューニングしようとしているのかについての正確な情報がなければ、どのツールをどのように使用するのかを判断するのは困難ですが、ドキュメントは優れており、多くのアプリケーションをカバーしています。

于 2008-09-24T14:56:57.277 に答える
0

残りのSQL調整に使用するツール(SQLyog)には、プロファイラーを含む新しいバージョンがあります。これはすばらしいことです。(私は彼らのために働いていません-私は彼らの製品を使用しています)

ここに画像の説明を入力してください

http://www.webyog.com/en/screenshots_sqlyog.php

于 2009-03-10T11:49:25.117 に答える