datewise记录从大型mySQL数据库中排序/获取

时间:2009-06-12 20:31:58

标签: php mysql

我每天的数据都有一个单独的表格,基本上是webstats类型:关键字,访问次数,持续时间,IP,销售等(每条记录总共可能有100个字节) 每张表将有大约几百万条记录。

我需要做的是拥有一个网络管理员,以便用户/管理员可以查看不同日期的报告,并按某些计算值排序。例如,用户可能希望将上个月15日的结果发送到本月12日,按SALE / VISIT降序排序。

admin / user只需要一次查看(比方说)前200条记录,并且在任何一个会话中可能都不会查看超过几百条记录

由于涉及任意日期,我需要总结每条记录的相关列,然后才能完成选择。

我的问题是,是否可以实时提交报告,或者报告是否太慢(表格不是很少 - 如果有的话 - 在插入当天的数据后更新)

这种情况是否更适合索引或表格扫描?

此外,对于所有日期而言,一个大型表格是否比为每个日期分配表格更好(几乎没有联接)

提前感谢!

2 个答案:

答案 0 :(得分:1)

每个月的数据都有一个单独的表,一个月的总结将涉及对30多个表中的每一个进行相同的分析。一年多的时间,您将不得不对365个左右的表进行分析。那将是一场噩梦。

拥有一个合理索引的单个表几乎肯定会比大量的表更好。一些DBMS支持碎片表 - 如果是MySQL,则按日期对单个大表进行分段。我倾向于按月分段,特别是如果正常查询是一个月或更短时间并且不跨越月界限。 (即使它涉及两个月,消除了不错的片段,查询引擎也不必读取大部分数据;只需要两个月的两个片段。它可能能够并行执行这些扫描,甚至 - 再次,取决于DBMS。)

有时候,对表进行顺序扫描要比进行索引查找更快 - 不要简单地假设因为查询计划涉及表扫描,它将自动执行不良。

答案 1 :(得分:0)

您可能想尝试不同的方法。我认为Splunk会为你工作。它是专为此而设计的,他们甚至在这个网站上做广告。他们有免费版本你可以尝试。