php - 数据库命令在我的 PHP 脚本中冰冷地运行,在 phpMyAdmin 中快速运行

标签 php database query-optimization propel

我有一个非常大的 MySQL 数据库(大约 100 万个项目),并且正在该数据库上运行一个相当复杂的查询。当我在 phpMyAdmin 中输入 SQL 命令时大约需要 2 秒,但使用 PHP 代码生成相同的输出大约需要 1-2 分钟。

为什么会有这样的时差?如果这是一个执行不当的查询,那么结果是否也需要很长时间才能出现在 phpMyAdmin 中?

最佳答案

你确定你得到的输出完全一样吗?

如果您的数据库中有大量数据,您的查询会返回多少行?

当您使用 phpMyAdmin 启动查询时,它会自动添加分页。

因此,对于这个初始查询:

select *
from test

phpMyAdmin 实际上执行了这个:

select *
from test
limit 0, 30

如果您的查询没有这个限制(当从您的 PHP 脚本执行它时),它可以解释差异:获取 30 行和获取数百/数千/更多行所花费的时间不同(渲染那些也是一样的)。

如果您在查询中使用限制和/或不尝试获取很多行,您可以发布您的代码吗?

(另一个可能的原因是查询缓存:第一次运行查询需要很多时间;下一次,MySQL 将结果保存在缓存中)

关于php - 数据库命令在我的 PHP 脚本中冰冷地运行,在 phpMyAdmin 中快速运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1169836/

相关文章:

sql - 使用索引加速左 anchor 查询?

javascript - 在php/javascript中单击另一个页面中的按钮时需要启用按钮

mysql - 是否建议将(图像)表与(用户)、(产品)、(公司)以及任何独立的表相关联?

php - 在闭包中使用数组元素

sql - 从表中删除所有 NULL 值的行?

mysql - 改进 MySQL 查询

MYSQL 解释 Rows_examined 不匹配

mysql - 如何优化运行时间为 2 分 25 秒的我的 sql 查询

php - 如何将密码编码器附加到 Silex 中的用户界面?

php - 使用 mail() 在 PHP4 的电子邮件中发送附件和 text/html