クエリ:
mysqli_query($link
"UPDATE users SET lastclick = '". time() ."', lastpage = '". ucfirst(page) ."'
WHERE id = '". $user['id'] ."' ");
時間がかかりすぎます(100 ミリ秒以上)。このクエリを高速化するにはどうすればよいですか / このクエリを高速化することは可能ですか?
テーブル構造
私の頭に浮かぶことの1つは、時間の値を入力するときに、なぜ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;