Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
phpMyAdmin执行查询的速度比普通PHP脚本快_Php_Mysql_Phpmyadmin_Centos8 - Fatal编程技术网

phpMyAdmin执行查询的速度比普通PHP脚本快

phpMyAdmin执行查询的速度比普通PHP脚本快,php,mysql,phpmyadmin,centos8,Php,Mysql,Phpmyadmin,Centos8,我有一个SQL查询: SELECT country_code FROM GeoIP WHERE 3111478102>=ip_from AND 3111478102<=ip_to; 请注意:我正在(GeoIP)中搜索的表包含超过39条minion记录。但我认为这不是问题所在,因为相同的查询在同一台服务器上运行得更快。我还尝试将同一个数据库和PHP脚本上载到另一个共享主机帐户(不是我自己的服务器),它工作正常,仅用1.6秒就从PHP脚本执行了查询。这可能是解决您问题的有用线索: 前

我有一个SQL查询:

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

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

这可能是解决您问题的有用线索:

前端工具(如phpMyAdmin)通常钉在限制子句上,以便对结果进行分页,而不会使浏览器或应用程序在大型表上崩溃。一个查询可能返回数百万条记录,而且这样做会花费很多时间,如果受到更多约束,那么它的运行速度会更快

比较一个有限的查询和一个完整的查询是不公平的,检索时间会有很大的不同。检查这两个工具是否正在获取所有记录


尝试
选择SQL\u NO\u缓存国家/地区\u代码…
。PMA是否与您正在运行的代码位于同一服务器上?它们与MySQL在同一台服务器上吗?@user3783243我试图在没有
$conn->query()
和相关行的情况下执行相同的php脚本。结果是
时间:0
。我还尝试在phpMyAdmin中执行相同的查询,但不让它缓存,结果是相同的(时间:0.7或0.8)。@rjdown我尝试了
SQL\u NO\u cache
,执行时间是相同的(0.7或0.8秒)。PHP脚本和PMA都运行在同一台服务器上,使用的是同一个MySQL。@rjdown:SQL\u NO\u缓存已被弃用一段时间,请参阅:@user3783243,请查看以下屏幕截图:问题是PHP脚本执行SQL查询的速度太慢。问题不在于为什么PMA太快!因为,在另一台服务器上,同样的场景只需1.5秒即可完成。@ghaderr.Majeed..问题不在于为什么PMA速度太快。。。但你问题的标题实际上是“phpMyAdmin执行查询的速度比普通PHP脚本快”@B001ᛦ, 确切地说,这意味着PHP/Apache/MySQL中存在一个应该修复的问题。不降低phpMyAdmin的速度^^
<?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