PHP:查询执行缓慢

PHP:查询执行缓慢,php,performance,Php,Performance,我有这个登录系统: require_once "conexion.php"; class login extends conexion { public function log_user($user,$pass) { $conexion = mysql_conexion(); $login = "SELECT user_name,user_pass,id FROM menssager_user WHERE

我有这个登录系统:

    require_once "conexion.php";


    class login extends conexion {



    public function log_user($user,$pass)
        {
        $conexion = mysql_conexion();
            $login = "SELECT user_name,user_pass,id FROM menssager_user WHERE user_name='$user' AND user_pass='$pass'";
                $e = $conexion->prepare($login);
                    $e->execute();

                $re = $e->fetch(PDO::FETCH_ASSOC);

                    if($user == $re["user_name"] && $pass == $re["user_pass"])
                    {

                    $this->is_online($re["id"]);
                    return $re["id"];
                    }

        $conexion = null;

        }   }
当我执行该代码时,需要1.3秒来确定该用户是否存在,而我在数据库中只有2个用户名。 有人能告诉我为什么这么慢吗? 注意:昨天我升级到5.4.7并重新编写代码(针对该版本的新功能)

更新:

以及数据库conexion:

class conexion{

        public function mysql_conexion(){

            $conexion_path = "mysql:dbname=menssager;host:127.0.0.1";
                $root = "root";
                $pass = "";

                try{

                    $conectar = new PDO($conexion_path,$root,$pass);
                    $conectar->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
                    $conectar->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

                }catch(PDOException $error)
                {
                    echo $conectar = $error->getMessage();
                }
                return $conectar;

        }
    }

当您仍然在测量连接与执行时间时,我将冒险猜测答案。我认为你的连接时间是造成延迟的原因。看看前面提出的类似问题。

关闭反向DNS查找可能会对您有所帮助。 添加显示如何将其关闭的链接:


用户名和用户密码字段是否有索引?虽然只有两行,但我仍然有点困惑,如果表中有很多其他字段,并且包含大量数据和/或糟糕的硬件设置,那么查询将花费这么长的时间。还有,为什么还要麻烦返回用户名和用户传递值并重新验证它们呢。这不像是在创建准备好的语句和进行比较的时间之间发生变化。最后,如果您要使用准备好的语句,那么实际上应该使用绑定参数来传递数据。我还有一个简单的查询,我用它来知道用户是否在线,这也需要1.2秒。自从我开始使用extends php以来,我的查询执行速度非常慢。什么是
extends php
?如果我直接在数据库中查询,执行和显示结果只需要0.0004秒。@EinerSantanaR这很能说明问题,您的代码在设置连接时可能存在问题。您可以轻松地使用
microtime()
在应用程序中添加计时器,以查看实际花费的时间。不,同样的问题。我的天哪,还差一秒钟,所以,在花了几个小时来解决这个问题之后,我在这篇文章中遇到了这个问题,我刚刚做的是我希望能帮助别人的第一件事。现在执行需要21毫秒:很好,你的问题已经解决了!但是,即使您已将etc/hosts文件修复为localhost条目,但当您从服务器的hosts文件中没有任何条目的各种外部客户端计算机进行连接时,仍然可能会遇到问题。我认为您需要更改mysql配置,以确保它不会浪费时间查找客户端名称。