sql >> データベース >  >> RDS >> Mysql

MySQL EXPLAINの出力を解釈する方法は?

    質問への回答:

    • possible_keysですか MySQLが使用する可能性のあるインデックスとkeys MySQLが実際に使用するインデックスは何ですか?はい、これは正しいです。

    • インデックスがindex_status_mit_spamである理由 使用されていない?クエリでは、列の順序はインデックスと同じです。 SQLはテーブルのインデックスの統計を使用します 使用するインデックスを決定します。 selectステートメントのフィールドの順序は効果がありません 使用するインデックス。インデックスに関する統計には、インデックスの一意性などの情報が含まれます。より一意のインデックスが使用される可能性があります。詳細については、こちらをご覧ください: http ://dev.mysql.com/doc/innodb/1.1/en/innodb-other-changes-statistics-estimation.html またはここ: http://dev.mysql .com / doc / refman / 5.0 / en // myisam-index-statistics.html 。これらの要因により、MySQLが1つのインデックスを選択する方法が決まります。 使用します。 1つのインデックスのみを使用します 。

    • インデックスがindex_datumである理由 ORDER BYには使用されません ? 2番目のインデックスを使用するとクエリがさらに遅くなるため、MySQLはクエリ中に2つではなく1つのインデックスのみを使用します。インデックスの読み取りは、テーブルの読み取りではありません。これは、クエリの運用効率に関連しています。いくつかの概念を説明できる回答は次のとおりです。 https://dba.stackexchange.com/questions/18528/performance-difference-between-clustered-and-non-clustered-index/18531#18531 または MySQLクエリにlimit句を追加すると、劇的に遅くなります または、MySQLインデックスとグループ化のタイミングそれら 。これらの回答には、MySQLインデックスを理解するのに役立つ詳細がたくさんあります。

    • テーブルインデックスまたはクエリを最適化するにはどうすればよいですか? (上記のクエリには、テーブルに約100万のエントリがある場合、最大3秒かかります)。さて、おそらくあなたを遅くしているファイルソートがここにあります。テーブルのインデックスが多すぎて、MySQLが間違ったインデックスを選択している可能性があります。

    インデックスはテーブルへの読み取りを高速化し、書き込みを遅くすることを理解する必要があります。したがって、インデックスを追加するだけでは必ずしも良い考えではありません。上記の回答と指針は、しっかりとした理解を得るのに役立つはずです。



    1. usingステートメントを使用してMySQL接続を閉じることはできますか?

    2. MySQLエイリアスフィールドを一緒に追加する

    3. MySQL各一意の値の最初の出現時に行を選択します

    4. T-SQLPRINTステートメントの概要