0

查询:

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

花费太长时间(100ms+),我怎样才能加快这个查询/是否可以加快这个查询?

表结构

在此处输入图像描述

4

1 回答 1

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 参考手册。此外,请参阅UNIX_TIMESTAMP()命令帮助页面

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

SELECT UNIX_TIMESTAMP(lastclick)
  FROM users;
于 2013-05-01T12:58:50.017 回答