3

簡単なSELECT * From tv Where Client = 'ABCD'クエリを実行すると、EXPLAIN EXTENDED2 つの異なる結果が得られます。クエリを実行すると、1 つは数ミリ秒かかり、もう 1 つは約 3 秒かかります。2 つの異なる Explain 結果が得られるのはなぜですか? また、速度低下の原因は何ですか?

スロークエリ:

スロークエリ

高速クエリ:

高速クエリ

4

5 に答える 5

6

テーブル統計を更新することで解決しました。

MySQLで私はしました:

OPTIMIZE TABLE [tablename]
于 2015-05-18T19:08:09.993 に答える
1

まあ推定行数も違います。

そのため、MySQL はテーブル統計を使用して、どのインデックスをどのように使用するかを決定します。テーブルには異なる量の行が含まれているように見えるため、統計が異なるため、クエリ プランが異なることは合理的です。

アップデート:

行の列を正しく読みませんでした。したがって、行に大きな違いがあると想定しました。これはそうではありません。クエリが遅いテーブルでは、統計が古くなっている可能性があります。スロー クエリ テーブルに対して OPTIMIZE TABLE ステートメントを実行してください。これにより、基本的にテーブルが再構築されます。

于 2013-08-13T21:49:30.543 に答える
0

遅いクエリはタイプを as としてref示し、高速クエリはタイプを として示しますrange。遅いテーブルのクライアント行にインデックスがないと思われます。

于 2013-08-13T22:24:32.193 に答える