0

Web サイトの各ユーザーのクリック時間を記録する方法に取り組んでいます。

これを行う方法を考えようとすると、現在600,000以上のレコードがあります。

CREATE TABLE IF NOT EXISTS `clicktime` (
  `id` int(5) NOT NULL AUTO_INCREMENT,
  `page` int(11) DEFAULT NULL,
  `user` varchar(20) DEFAULT NULL,
  `time` bigint(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=686277 ;

ページごとにこれらの検索を 10 回行う必要があります。私のブログには、一度に 10 ページのスニペットが表示されます。

SELECT time 
FROM clicktime 
WHERE `page` = '112'
  AND `user` = 'admin' 
ORDER BY `id` ASC LIMIT 1

かかってきそうな電話はWHERE page = '112'

各呼び出しをプルするのに最大 3 秒かかります。

4

1 に答える 1

2

ここで改善できることは複数ありますが (たとえば、今回は bigint です)、短期的に役立つのは、userフィールドにインデックスを追加することだけです。

于 2012-04-28T19:59:49.683 に答える