mysql表很慢

时间:2014-04-15 02:25:28

标签: php mysql performance

我有一个非常简单的MySQL表,运行速度极慢,我无法弄清楚原因。

结构是:

id               int(11)        (Primary Key)        
username         varchar(64)    (Index)              
password         varchar(64)                 
pws              varchar(16)                 
default_password varchar(32)                 
session_id       varchar(64)                 
license_number   int(10)        (Index)          
contact_name     varchar(64)                 
phone            varchar(16)                 
first_login_date datetime                
last_login_date  datetime                
status           tinyint(4)              
test_mode        tinyint(4)              
email            varchar(64)                 
email_verified   tinyint(4)

表中只有80行,但以下查询 67秒 !!

SELECT * FROM `users` ORDER BY `username` ASC

这张桌子上的任何操作都非常慢。我做错了什么,或者我应该从哪里开始挖掘?

作为一个方面没有,我有另一个更复杂的表,有20,000行,运行速度非常快。

**更新...修复数据库并优化选择。似乎更新速度非常慢,然后放慢选择......

$this->db->update( "UPDATE users SET session_id='' WHERE id=:userid", array( ":userid" => $this->getUserId() ) );

这是我正在使用的PHP数据库代码:

class Database extends PDO
{

    public function __construct($DB_TYPE, $DB_HOST, $DB_NAME, $DB_USER, $DB_PASS)
    {

        $this->handleDB = new PDO($DB_TYPE.':host='.$DB_HOST.';dbname='.$DB_NAME, $DB_USER, $DB_PASS);
        $this->handleDB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    }

public function update($sql, $array = array())
    {
        $sth = $this->handleDB->prepare($sql);
        foreach ($array as $key => $value) {


            if(is_int($value)){
                $sth->bindValue("$key", $value, PDO::PARAM_INT);
            }else{
                $sth->bindValue("$key", $value, PDO::PARAM_STR);
            }



        }

        $sth->execute();

        return $sth->rowCount();
    }
  }
}

谢谢!

1 个答案:

答案 0 :(得分:1)

如果从客户端计算机运行查询,则可以检查两件事,检查网络速度到服务器。如果查询在Server上运行缓慢,您可以在Mysql服务器上检查慢查询日志。其次,您尝试在表上重新创建索引。在MySql上尝试检查表,修复表命令。