超过100个表的大规模SQL查询

时间:2013-02-25 16:34:29

标签: php mysql sql xml database

我最近被要求为网站的营销模块生成一个简单的模块,我被要求生成一组非常具体的结果,原始数据可通过MySQL数据库访问。现在起初我觉得非常直接,但是当面对表格时,我意识到我需要改变我的方法。

我这样面临的问题是,我需要的数据是用户操作的日志,同时导航网站的非常具体的部分。从登录到注销记录用户的每个操作,每天访问该站点的人数仅允许该系统在将数据存档到另一个表之前运行大约2天,总共我们有100个表加上直播,给我大约202天的数据在任何时候都可以使用。

所以这是我的问题。

这些表存储的数据大小和存档表的数量可能会或可能不会限制为100,并且客户端希望根据特定页面的操作显示在屏幕上的所有数字你会推荐这个吗?

基于数据库设置,可能会或可能不会直接使用SQL查询,所以我考虑了一些XML选项,使用基于页面和数据的chron将数据序列化为文件结构,但最终我不是100%我应该采取哪种方式,所以我想问,有没有人有更好的想法?如果是的话请分享。

提前感谢所有回复的人。

3 个答案:

答案 0 :(得分:1)

您不希望直接查询此数据。您希望创建具有您现在需要的信息的中间表,然后创建一些。

确切的格式取决于问题的性质。例如,为每个“会话”创建一条记录可能是合适的,其中列描述会话中发生的事情。或者,如果您只对客户感兴趣,您可以使用一堆值进行客户签名。

其中一个挑战是数据超越了日期之间的界限。因此,您将在一个表中打开“登录”而不是另一个表。这又造成多大问题取决于数据的使用方式。但是,您应该考虑使用它的策略。

如果你有很多用户在网站上有很多步骤,那么直接反对所有数据将会是有趣的。好吧,如果你在系统处理数据时长假,那么它实际上可能很有趣。

答案 1 :(得分:1)

如果您想查询自己的数据,听起来好像进入了需要进入数据仓库的区域。这意味着您希望对数据执行ETL作业,以使其进入数据库模式(星型模式,雪花模式等),这更有利于报告查询。

就个人而言,我会考虑利用Google Analytics等其他系统并开始将自定义数据记录到其中的方法。这样,Google可以维护基础架构,并获得所需的所有报告数据。您可以使用Google Analytics创建转化渠道以及您需要的大多数内容,但请注意,您必须花费大量时间来实际配置代码,以便向Google系统发送自定义事件,代码等。

答案 2 :(得分:-1)

您可以尝试使用缓存的概念。有了这个,您可能不需要每次从表中获取数据。