0

クエリ:

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

時間がかかりすぎます(100 ミリ秒以上)。このクエリを高速化するにはどうすればよいですか / このクエリを高速化することは可能ですか?

テーブル構造

ここに画像の説明を入力

4

1 に答える 1

0

私の頭に浮かぶことの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;
于 2013-05-01T12:58:50.017 に答える