我想问你有关我自己的分析系统的建议。 到目前为止,我的系统收集所有点击并将它们保存在SQL数据库中。
SQL数据库logs
如下所示:
+----+----------------------+-------------+---------------------------------------------+----------------+--------------+----------+
| id | time | address | address_to | ip | resolution | id_guest |
|----+----------------------+-------------+---------------------------------------------+----------------+--------------+----------|
| 1 | 2013-12-03#14:31:35 | index.php | https://www.youtube.com/watch?v=6VJBBUqr1wM | 89.XX.XXX.6 | 1366x768 | 6 |
| 2 | 2013-12-03#14:48:21 | file.php | https://www.youtube.com/watch?v=0EWbonj7f18 | 89.XX.XXX.6 | 1366x768 | 6 |
| 3 | 2013-12-03#16:16:55 | contact.php | https://www.youtube.com/watch?v=_o-XIryB2gg | 178.XX.XXX.140 | 1920x1080 | 11 |
| 4 | 2013-12-03#16:21:32 | index.php | https://www.youtube.com/watch?v=z0M96LyTyX4 | 178.XX.XXX.140 | 1920x1080 | 11 |
| 5 | 2013-12-03#16:44:32 | movies.php | https://www.youtube.com/watch?v=cUhPA5qIxDQ | 178.XX.XXX.140 | 1920x1080 | 11 |
+----+----------------------+-------------+---------------------------------------------+----------------+--------------+----------+
每次点击都会作为新记录添加到数据库中。
我网站上的所有电影都在SQL数据库的第二个表格中(电影):
+----+----------------------+-------------+---------------------+
| id | name | address | tags |
|----+----------------------+-------------+---------------------|
| 1 | 2013-12-03#14:31:35 | 6VJBBUqr1wM | bass,electro,trance |
| 2 | 2013-12-03#14:48:21 | 0EWbonj7f18 | electro,house,new |
| 3 | 2013-12-03#16:16:55 | _o-XIryB2gg | electro,party,set |
| 4 | 2013-12-03#16:21:32 | z0M96LyTyX4 | trance,house,new |
| 5 | 2013-12-03#16:44:32 | cUhPA5qIxDQ | techno,new,set |
+----+----------------------+-------------+---------------------+
一切都完美无瑕。在数据库中,我拥有用户查看的所有电影,我想要精确定义,所以记下IP +分辨率。
第一个问题: 这是确定用户的好方法吗?
-
现在我想使用收集的日志和基于浏览材料的电影显示界面。
我为进入网站的用户选择数据库中的所有日志。
从日志中我选择标识符胶片并在表components
中扫描它以获取日志并放入数组中。例如,ID = 6
的用户将拥有一个数组:
array(
[0] = > bass,
[1] = > electro,
[2] = > trance,
[3] = > electro,
[4] = > house,
[5] = > new
);
现在我将按照最常出现的顺序对数组的内容进行排序:
array(
[2] = > electro,
[1] = > bass,
[1] = > trance,
[1] = > house,
[1] = > new
);
根据数组的内容可以显示可能感兴趣的用户视频。
一切都很完美,但我现在才发现的问题......
在表logs
中,我有超过450万条记录。你可以想象,搜索如此大量的记录需要花费很多时间,进入网站有时会持续长达10秒......
我希望我的英语很差。
请提出如何通过加载页面解决此问题的任何建议。
答案 0 :(得分:0)
在需要的地方使用索引,很难确切地告诉你在哪里 - 你没有显示任何查询 - 基本上你想在WHERE部分查询和JOINS中都有索引列。您不必索引大多数时间保持相同的列 - isloggedin,isadmin,language or
为您需要搜索的数据创建搜索表 - 例如,如果您需要知道首选解决方案或用户访问过网站的次数,您可以创建一个cron作业来解析所有用户和商店的数据它在搜索表中。如果需要,还可以使用它来进行一些统计。对于这些代码,您可以使用user_id
,tag
,count
如果您只需要上次访问的网站,最后一个分辨率,...只需为此创建一个表格,您可以为每个用户存储和更新一行