MySQL UPDATE查询耗时太长(100ms +)

时间:2013-05-01 12:34:17

标签: mysql mysqli

查询:

mysqli_query($link 
"UPDATE users SET lastclick = '". time() ."', lastpage = '". ucfirst(page) ."' 
WHERE id = '". $user['id'] ."' ");

花费太长时间(100ms +),如何加快此查询速度/是否可以加快此查询速度?

表格结构

enter image description here

1 个答案:

答案 0 :(得分:0)

我想到的一件事是,当您输入时间值时,为什么lastclick列设置为INT?此外,对于查询中的id列,不需要单引号。输入整数,列也定义为整数。试试这个问题:

UPDATE users 
   SET lastclick = UNIX_TIMESTAMP(), 
       lastpage = '". ucfirst(page) ."' 
 WHERE id = ". $user['id'] ."

您还需要通过调用类似的查询来更改表结构:

ALTER TABLE users
     MODIFY lastclick TIMESTAMP NOT NULL;

有关ALTER TABLE语句语法的详细信息,请参阅MySQL Reference Manual。另外,请参阅UNIX_TIMESTAMP()命令help page

通过将列定义为TIMESTAMP,MySQL在内部将数据存储为UNIX时间戳值。执行SELECT语句后,MySQL会自动将数据值传输到时间戳格式。如果您希望以UNIX时间戳接收数据而不是格式化字符串,则使用相同的UNIX_TIMESTAMP()命令,例如:

SELECT UNIX_TIMESTAMP(lastclick)
  FROM users;