相关疑难解决方法(0)

PHP运行查询的时间比MySQL客户端长90倍

我正在通过命令行PHP脚本运行MySQL查询(使用mysqlnd驱动程序上的PDO准备好的查询).这是一个简单的查询,只有一个左连接,每行返回100行和7个小列.

当我在MySQL CLI中运行此查询时(在运行相关PHP脚本的同一台机器上),它需要0.10秒 - 即使抛出了SQL_NO_CACHE标志.

当我运行此查询时,通过PDO准备它需要超过9秒.这是执行() -这还不包括需要为获取呼叫的时间.

我的查询示例:

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_updated
FROM ActionAPI.actionLists al
LEFT JOIN ActionAPI.publishers_products pp
    ON al.publisher_product_id = pp.id
WHERE (al.test IS NULL OR al.test = 0)
    AND (al.created_on >= :since OR al.last_updated >= :since)
ORDER BY created_on ASC
LIMIT :skip, 100;
Run Code Online (Sandbox Code Playgroud)

我不相信查询是错误的,考虑到我尝试过的每个原生MySQL客户端都在近乎即时运行它,但这里是解雇的EXPLAIN:

+----+-------------+-------+--------+-------------------------+------------+---------+-----------------------------------+------+-------------+
| id | select_type | table | type   | possible_keys           | key        | key_len | ref                               | rows | Extra       |
+----+-------------+-------+--------+-------------------------+------------+---------+-----------------------------------+------+-------------+ …
Run Code Online (Sandbox Code Playgroud)

php mysql pdo

14
推荐指数
2
解决办法
2935
查看次数

标签 统计

mysql ×1

pdo ×1

php ×1