MySQLは最適なインデックスを使用しません

何:

私は、単純なSELECTクエリを持っています。

SELECT *
FROM `inventory`
WHERE account_id = "1"
AND marketplace_id = "2"
AND sku = "3"
AND `date` = "4"

したがって、自然のインデックスは、これらの4つのフィールドで、四つのフィールドに条件があります。

私は、次のインデックスを持っています: ここでは、画像の説明を入力します。

私は、クエリを説明するときに、私が取得:ここでは、画像の説明を入力します。それはリストから2番目のインデックスではなく、第三または第四を使用していると言って。

私が使用している場合はUSE INDEX(account_id__marketplace_id__sku__date)、私のクエリでは、それが成功し、それを使用し、100%をフィルタリングします。

私が試してみましたANALYZE TABLEし、OPTIMIZE TABLEインデックスを再構築するために、しかし、状況は変わりません!

他のテーブルとの私の経験から、私は今、インデックス2と3をドロップし、それらを再作成する場合は、最大のインデックスは順序で最初になるように、クエリはそれが最初の選択、つまり、そのインデックスを選択することではなく試合最大一致。

  • MySQLサーバのバージョン:5.7.25-Googleのログ
  • phpMyAdminのMySQLクライアントのバージョン:5.5.59
市は期待しています:

MySQLはテーブルのデータ・サイズによってインデックスを選択します。 ここでは、画像の説明を入力します。

あなたは、インベントリに600000件のレコードを挿入しようと、ランダムなレコードの値を維持し、実行することができます「説明」

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=372709&siteId=1