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

EXPLAINプランに基づいてMySQLクエリを最適化する方法

    目的とクエリの内容によって異なります。

    一般に、Using whereを持つEXPLAINのすべての行に対して 、インデックス(possible keys)を使用して取得する必要があります およびkeys 桁)。これらはフィルターであり、WHEREとONが含まれます。 Using indexと言わせる さらに良いです。これは、カバーするインデックスがあり、MySQLがテーブルデータの行にアクセスするのではなく、インデックスから直接データを取得できることを意味します。

    Using whereがない行 、そしてそれは多くの行を返すことを確認する必要があります。これらは、テーブル内のすべての行の値を返します。あなたの質問が何であるかわからないので、ここで警戒するべきかどうかわかりません。結果セットをフィルタリングして、サイズを縮小し、パフォーマンスを向上させてください。

    通常、Using filesortが表示されないようにする必要があります またはUsing temporary 、しかし、それらはあなたがそれらを期待していない場合にのみ悪いです。

    Filesortは通常、ORDER句とともに表示されます。通常、MySQLでカバーインデックスを使用する必要があります(Using index )行がサーバーから順番に返されるようにします。そうでない場合、MySQLはファイルソートを使用して後でそれらを注文する必要があります。

    Using temporary 派生テーブルにはインデックスがないため、派生テーブルを参照する場合は問題になる可能性があります。インデックスを使用して一時テーブルを明示的に作成したようですので、ここでは悪くありません。場合によっては、派生テーブルを使用することしか選択できないため、Using temporaryを使用することもできます。 。




    1. 日付範囲によるSQLグループ化

    2. 再起動後にXAMPPMySQLサービスがクラッシュする

    3. スーパーユーザーの役割がないと拡張機能を作成できません

    4. 文字列から列名への動的変換。 MySQL