【问题标题】:phpMyAdmin executes queries faster than normal PHP scriptphpMyAdmin 执行查询比普通 PHP 脚本更快
【发布时间】:2021-06-11 05:59:17
【问题描述】:

我有一个 SQL 查询:

SELECT country_code FROM GeoIP WHERE 3111478102>=ip_from AND 3111478102<=ip_to;

我尝试在 phpMyAdmin 和普通 php 脚本中执行相同的查询,结果如下:

phpMyAdmin

PHP 脚本

如您所见,在 phpMyAdmin 中完全执行查询只用了 0.8 秒。而普通 PHP 脚本需要 4.5 秒!

php脚本代码:

<?php
    // ob_start();
    // error_reporting(0);
    error_reporting(E_ALL);
    ini_set('display_errors', 'On');

    header_remove("X-Powered-By");
    ini_set('session.gc_maxlifetime', 13824000);
    session_set_cookie_params(13824000);
    session_start();
    include_once './config.php';
    // include_once './functions/mainClass.php';

    $beforeMicro = microtime(true);
    $res = $conn->query("SELECT country_code FROM GeoIP WHERE 3111478102>=ip_from AND 3111478102<=ip_to");
    if ($res->rowCount() > 0){
        $sen = $res->fetch(PDO::FETCH_OBJ);
        $country_code = $sen->country_code;
        print_r([$country_code]);
    }
    $afterMicro = microtime(true);
    echo 'time:'.round(($afterMicro-$beforeMicro)*1000);
?>

与此同时,我正在设置一个新的网络服务器并使用以下内容:

CentOS 8
Apache 2.4.46
PHP 7.2.24

请注意:我在 (GeoIP) 中搜索的表包含超过 39 条 minion 记录。但我认为这不是问题,因为相同的查询在同一台服务器上运行得更快。我还尝试将相同的数据库和 PHP 脚本上传到另一个共享主机帐户(不是我自己的服务器),并且它可以在 1.6 秒内从 php 脚本执行查询。

【问题讨论】:

  • 试试SELECT SQL_NO_CACHE country_code...。 PMA 是否与您正在运行的代码在同一台服务器上?它们与 MySQL 在同一台服务器上吗?
  • @user3783243 我尝试在没有$conn-&gt;query() 和与之相关的行的情况下执行相同的php 脚本。结果是time: 0。我还尝试在 phpMyAdmin 中执行相同的查询而不让它缓存,它是相同的(时间:0.7 或时间:0.8)。
  • @rjdown 我试过SQL_NO_CACHE,执行时间是一样的(0.7s 或 0.8s)。 PHP 脚本和 PMA 都在同一台服务器上运行并使用相同的 MySQL。
  • @rjdown:SQL_NO_CACHE 已被弃用一段时间,请参阅:stackoverflow.com/questions/58584596/…
  • @user3783243,请查看以下截图:prnt.sc/10kgugh

标签: php mysql phpmyadmin centos8


【解决方案1】:

这可能对您的问题很有帮助: Why would phpmyadmin be significantly faster than the mysql command line?

像 phpMyAdmin 这样的前端工具通常会在 LIMIT 子句上装订,以便对结果进行分页,而不会使浏览器或应用程序在大型表格上崩溃。一个可能返回数百万条记录的查询,这样做会花费大量时间,如果受到更多限制,它将运行得更快。

将有限的查询与完整的查询进行比较并不公平,检索时间会显着不同。检查这两个工具是否都在获取所有记录。

【讨论】:

  • 问题是 PHP 脚本执行 SQL 查询太慢了。问题不在于为什么 PMA 太快了!因为,在另一台服务器上只需 1.5 秒即可完成相同的场景。
  • @GhadeerR.Majeed ..问题不在于为什么 PMA 太快了! ... 但你的问题的标题实际上是“phpMyAdmin 执行查询比普通 PHP 脚本更快”
  • @B001ᛦ,没错,这意味着 PHP/Apache/MySQL 中存在应该修复的问题。不降低 phpMyAdmin 的速度 ^^
猜你喜欢
  • 1970-01-01
  • 2011-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-25
相关资源
最近更新 更多