PHP   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了PHP比MySQL客户端运行查询要花费90倍大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我通过命令行 PHP脚本(在MysqLnd驱动程序上使用PDO准备的查询)运行MySQL查询.这是一个简单的查询,具有单个左连接,每行返回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;

我不认为查询错误的,虑到我尝试过的每一个本地MysqL客户端已经运行在几乎瞬间,但是这里是EXPLAIN for kicks:

+----+-------------+-------+--------+-------------------------+------------+---------+-----------------------------------+------+-------------+
| id | SELEct_type | table | type   | possible_keys           | key        | key_len | ref                               | rows | Extra       |
+----+-------------+-------+--------+-------------------------+------------+---------+-----------------------------------+------+-------------+
|  1 | SIMPLE      | al    | index  | created_on,last_updated | created_on | 8       | NULL                              |  100 | Using where |
|  1 | SIMPLE      | pp    | eq_ref | PRIMary                 | PRIMary    | 4       | ActionAPI.al.publisher_product_id |    1 |             |
+----+-------------+-------+--------+-------------------------+------------+---------+-----------------------------------+------+-------------+
2 rows in set (0.00 seC)

PDO在做什么在世界上花了8.9秒?

编辑:正如注释中所述,我已经编写了一个这样的MysqL_query版本,并且性能相同.然而,删除WHERE子句的一部分使其运行速度与MysqL客户端一样快.继续阅读令人难以置信的细节.

我有同样的问题.从cli和PHP启动时,相同的查询行为有所不同.解释在cli中提到正确的索引使用,在PHP中没有什么.正如我发现,问题是类型转换,在我的情况下是datetiR_370_11845@e.在我专门用于比较值的类型之后,例如.其中datetiR_370_11845@e_column> cast(‘2014-01-12 12:30:01’as datetiR_370_11845@E)一切正常

大佬总结

以上是大佬教程为你收集整理的PHP比MySQL客户端运行查询要花费90倍全部内容,希望文章能够帮你解决PHP比MySQL客户端运行查询要花费90倍所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。