我正在尝试调试的 PHP 应用程序在更大的 MySQL 数据库上运行了几个设计不当的查询。
有几个页面确实很慢,结果发现是因为一些查询。我开始一一检查每个查询,虽然它们很慢,但它们本身并没有那么慢。
经过进一步调试后发现,只有当应用程序将它们作为准备好的语句运行时,它们才会变慢。
如果我通过 MySQL 客户端手动运行查询,大约需要 300 毫秒。如果我通过 MySQL 客户端运行创建一条准备好的语句并设置参数并运行它,大约需要 300 毫秒。
如果我从 PHP (mysqli) 运行简单查询,大约需要 300 毫秒。
如果我像应用程序一样通过mysqli预准备语句运行它,则需要 100 秒。
我想也许是这样,mysqli所以我用PDO尝试了一下,结果是一样的。尝试了不同的 PHP 版本(5.6、7.2、7.3)并得到相同的结果。
所以我给了最后一次机会,写了一个小的 Go 脚本来测试,我得到了相同的结果,并且事情得到了改进。
现在,如果我从 MySQL 客户端或 MySQL Workbench 或 PHPStorms 数据库客户端运行查询的准备语句版本,速度会很快。如果我从代码中运行查询,速度会非常快。
任何关于我应该照顾什么、我应该在哪里继续调试的帮助将不胜感激。
江户川乱折腾
人到中年有点甜
随时随地看视频慕课网APP
相关分类