提供有关此问题的最新信息:
我还没有找到原因,但是事实证明,PHP和CLI的解释是不同的。我不确定连接的任何方面是否会导致MySQL选择对索引使用不同的字段,因为据我所知,这些东西不应该相关。但是可惜,PHP的EXPLAIN显示未使用正确的索引,而CLI却在使用。
在这种(令人困惑的)情况下,解决方案是使用索引提示。从我的示例中看到此修改后的查询中的“ FROM”行:
SELECt HEx(al.uuid) hexUUID, al.created_on, IFNULL(al.state, 'ON') actionType, pp.publishers_id publisher_id, pp.products_id product_id, al.action_id, al.last_updatedFROM ActionAPI.actionLists al USE INDEX (created_on)LEFT JOIN ActionAPI.publishers_products pp ON al.publisher_product_id = pp.idWHERe (al.test IS NULL OR al.test = 0) AND (al.created_on >= :since OR al.last_updated >= :since)ORDER BY created_on ASCLIMIT :skip, 100;
希望这对某人有帮助!



