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

MySQLインデックスがクエリを遅くする

    article_idがarticleテーブルの主キーのようです。

    article_idでグループ化しているため、MySQLは、GROUP BYを実行するために、その列の順にレコードを返す必要があります。

    インデックスがないと、記事テーブル内のすべてのレコードがスキャンされますが、少なくともarticle_idの順序であるため、後で並べ替える必要はありません。 LIMIT最適化はここで適用できます。これはすでに順序付けられているため、5行を取得した直後に停止できます。

    tag.nameにインデックスがあるクエリでは、articlesテーブル全体をスキャンする代わりに、インデックスを利用しますが、タグテーブルに対して開始します。残念ながら、これを行う場合、GROUP BY句を完了するには、後でレコードをarticle.article_idで並べ替える必要があります。 LIMIT最適化は、最初の5行を取得するために、結果セット全体を返し、それを並べ替える必要があるため、適用できません。

    この場合、MySQLは誤って推測します。

    LIMIT句がないと、インデックスの使用が高速になると推測しています。これは、MySQLが推測していたことかもしれません。



    1. TreeViewImageComboドロップダウンアクセスメニュー

    2. パフォーマンスの神話:クラスター化インデックスと非クラスター化インデックス

    3. 大きなバッファを作成せずに、.NETオブジェクトの大きなグラフをSQL Server BLOBにシリアル化するにはどうすればよいですか?

    4. MySqlに相当するプロファイラーはありますか?