繁体   English   中英

从大型mySQL数据库按日期排序/获取记录

[英]datewise records sorting /fetching from large mySQL database

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

我需要做的是拥有一个Web管理员,以便该用户/管理员可以查看不同日期段的报告并按某些计算值进行排序。 例如,用户可能想要上个月15日至本月12日的结果,并按SALE / VISIT降序排列。

管理员/用户一次只需要查看(说)前200条记录,并且在任何一个会话中查看的总数可能都不超过几百条

由于所涉及的日期是任意的,因此我需要总结每条记录的相关列,然后才可以进行选择。

我的问题是,是否有可能实时生成报告或它们太慢(在插入当天的数据后,表很少(如果有的话)进行更新)

这样的方案是否更好地适合于索引或表扫描?

而且,对于所有日期而言,庞大的表是否比每个日期都有单独的表(几乎没有联接)更好?

提前致谢!

对于每天的数据有一个单独的表,一个月的汇总将涉及对30多个表中的每个表进行相同的分析。 一年多来,您将需要对365个左右的表进行分析。 这将是一场噩梦。

拥有完全索引的单个表几乎比拥有大量表要好得多。 一些DBMS支持分段表-如果MySQL支持,则按日期分段单个大表。 我倾向于按月细分,尤其是如果正常查询的时间不超过一个月且不跨越月份界限。 (即使涉及两个月,而且消除了相当大的碎片,查询引擎也不必读取大部分数据;两个月只需要读取两个碎片。它甚至可以并行进行这些扫描,甚至- ,具体取决于DBMS。)

有时,对表进行顺序扫描比进行索引查找要快-不要简单地假设因为查询计划涉及表扫描,所以自动执行效果会很差。

您可能想尝试其他方法。 我认为Splunk将为您服务。 正是为此而设计的,他们甚至在此网站上做广告。 他们有一个免费版本,您可以尝试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM