我没有在"视图"表中存储将单个页面视图存储的站点:
CREATE TABLE `views` (
`view_id` bigint(16) NOT NULL auto_increment,
`user_id` int(10) NOT NULL,
`user_ip` varchar(15) NOT NULL,
`view_url` varchar(255) NOT NULL,
`view_referrer` varchar(255) NOT NULL,
`view_date` date NOT NULL,
`view_created` int(10) NOT NULL,
PRIMARY KEY (`view_id`),
KEY `view_url` (`view_url`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Run Code Online (Sandbox Code Playgroud)
这是非常基本的,存储user_id(用户在网站上的id),他们的IP地址,url(没有域减少表的大小),引用url(现在没有真正使用它,可能会摆脱它它的日期(当然是YYYY-MM-DD格式),以及视图发生时的unix时间戳.
当然,这个表变得相当大(目前有400万行,而且它是一个相当年轻的站点),并且运行查询的速度很慢.
对于一些基本的优化,我现在创建了一个'views_archive'表:
CREATE TABLE `views_archive` (
`archive_id` bigint(16) NOT NULL auto_increment,
`view_url` varchar(255) NOT NULL,
`view_count` smallint(5) NOT NULL,
`view_date` date NOT NULL,
PRIMARY KEY (`archive_id`),
KEY `view_url` (`view_url`),
KEY `view_date` (`view_date`)
) …Run Code Online (Sandbox Code Playgroud)