我有一个非常简单的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();
}
}
}
谢谢!
答案 0 :(得分:1)
如果从客户端计算机运行查询,则可以检查两件事,检查网络速度到服务器。如果查询在Server上运行缓慢,您可以在Mysql服务器上检查慢查询日志。其次,您尝试在表上重新创建索引。在MySql上尝试检查表,修复表命令。