Magento 1.9.2.1があります。 Apache2とMySQL 5.5上で正常に動作します。MySQL 5.5から5.7でインデックスの使用を停止しました
私は別のサーバに移行しようとしましたが、NGINXとMySQL 5.7を使用しました。
しかし、ウェブサイトは非常に遅くなり始めました(2秒で12秒)。
SELECT
`main_table`.`entity_id`,
`main_table`.`name`,
`main_table`.`path`,
`main_table`.`is_active`,
`main_table`.`is_anchor`,
`url_rewrite`.`request_path`
FROM
`catalog_category_flat_store_1` AS `main_table`
LEFT JOIN
`core_url_rewrite` AS `url_rewrite` ON
`url_rewrite`.`category_id` = `main_table`.`entity_id` AND
`url_rewrite`.`is_system` = 1 AND
`url_rewrite`.`store_id` = 1 AND
`url_rewrite`.`id_path` LIKE 'category/%'
WHERE
(`main_table`.`include_in_menu` = '1') AND
(`main_table`.`is_active` = '1') AND
(`main_table`.`path` like '1/2/%')
ORDER BY
`main_table`.`position` ASC;
そして上の使用インデックスがないことを私が発見した説明: は、デバッグの数時間後、私は1つのクエリに問題があることを発見しました。使用中のインデックスを示す古いMySQL 5.5サーバのexplainコマンド。インデックスの使用を強制すると、新しいサーバーは10秒ではなく0.01秒で応答します。しかし、私はmagentoコードのソースファイルを変更することは良い考えではないと思います。
インデックスを選択する際に5.5と同様の方法でMySQL 5.7を強制的に動作させる方法はありますか?
私はこの問題を自分で修正しました。 Magentoのソースを編集して、クエリでインデックスを使用できるようにします。それは非常に醜い解決策ですが、それは動作します。 –