何:
私は、単純な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件のレコードを挿入しようと、ランダムなレコードの値を維持し、実行することができます「説明」