查询:
mysqli_query($link
"UPDATE users SET lastclick = '". time() ."', lastpage = '". ucfirst(page) ."'
WHERE id = '". $user['id'] ."' ");
花费太长时间(100ms+),我怎样才能加快这个查询/是否可以加快这个查询?
表结构
我想到的一件事是,为什么在输入时间值时将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;