mysql学历统计表,MySQL统计表优化

我会推荐这个:

使用intergers而不是chars / varchars.这样你的索引更快(引荐来源除外).另外,我可以推荐收集汇总表.虽然它没有真正规范化,但查询将立即执行 – 特别是如果您拥有大量流量的大型组织.

所以这里的表:

create table statistics (

browser tinyint(3) UNSIGNED not null default 0,

version float(4,2) not null default 0,

ip INT(10) UNSIGNED not null default 0,

createdon datetime,

referrer varchar(5000),

key browserdate (browser, createdon),

key ipdate (ip, createdon),

// etc..

);

浏览器0 = unknow,1 = firefox等.这可以在你的代码中完成(所以你加载相同的代码进行插入和选择).我不会在这里使用枚举,因为如果你需要更改表,你有数百万条记录,这可能是痛苦的.新浏览器=代码中的新数字更快地更改.

如果发生这种情况,该表可用于重新整理所有其他表.因此您可以为内嵌摘要表(示例浏览器)创建索引

现在汇总表:

create table statistics_browser_2011_11 (

browser tinyint(3) UNSIGNED not null default 0,

version float(4,2) not null default 0,

number bigint(20) not null default 0,

createdon datetime,

unique key browserinfo (createdon, browser, version)

); // browsers stats for november 2011

这样当你插入(当用户访问该站点并创建一个与表名相匹配的$字符串时,你得到日期)到这个表中,你只需要使用重复的密钥号=数字1.你检索浏览器的统计数据是超快的.

现在在这里,您将必须创建一个合并表,因为如果您是本月的第二个月,并且您想查询最近7天,则需要当前月份和最后一个月份表.这里有更多的信息:http://dev.mysql.com/doc/refman/5.1/en/merge-storage-engine.html

并重复其他信息的过程:ip,referrer等…

为了维护这些表,您将必须创建一个cronjob,创建下个月的表.简单的PHP脚本,获取当前年/月,然后创建下个月的表,如果它不存在,然后合并)

这可能是一些工作,但这是我如何在工作(与类似的数据)12 TB的数据和5,000员工获取数据库.每个查询的平均加载时间约为每个请求0.60秒.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值