【发布时间】:2012-04-12 13:34:56
【问题描述】:
我正在尝试提高一个程序的性能,该程序跟踪通过网站采用的最流行路径。给定的 URL 在表 sessionpage 中注册,具有 unique_id:
+-----------+--------------------------+---------------------+
| unique_id | page_url | mod_date_stamp |
+-----------+--------------------------+---------------------+
| 2378 | /resources/series75.html | 2008-10-03 22:49:00 |
+-----------+--------------------------+---------------------+
然后另一个表 session 使用 sessionpage 中的 unique_id 计算一组最多 5 个 url 的点击次数。
会话
+-----------+---------+-----------------+-----------+---------------------+-------
| unique_id | counter | sequence_length | yearmonth | mod_date_stamp | page1 |
+-----------+---------+-----------------+-----------+---------------------+-------
| 1 | 2 | 2 | 201203 | 2012-03-28 15:42:38 | 5298 |
+-----------+---------+-----------------+-----------+---------------------+-------
+-------+-------+-------+-------+
page2 | page3 | page4 | page5 |
+-------+-------+-------+-------+
6075 | 0 | 0 | 0 |
+-------+-------+-------+-------+
现在,统计程序正在从会话页面中为每个 URL 获取 unique_id,这花费的时间太长了。我想多次将 sessionpage 加入会话,以便 page1 - page5 字段显示 url 路径(或 0/null)而不是 sessionpage 中的 unique_id 以加快程序速度。
最终结果应如下所示:
+-----------+---------+-----------------+-----------+---------------------+-------
| unique_id | counter | sequence_length | yearmonth | mod_date_stamp | page1 |
+-----------+---------+-----------------+-----------+---------------------+-------
| 1 | 2 | 2 | 201203 | 2012-03-28 15:42:38 | /path/index.html |
+-----------+---------+-----------------+-----------+---------------------+-------
+-------+-------+-------+-------+
page2 | page3 | page4 | page5 |
+-------+-------+-------+-------+
/path3/disk.html | 0 | 0 | 0 |
+-------+-------+-------+-------+
提前致谢。
【问题讨论】:
-
第二张表的unique_id上是否有索引?
-
不,但有可能。目前,unique_id 是会话的主键。每个可能的 URL 组合都有自己的 unique_id。
-
我不明白您为什么需要多次加入。似乎您的表结构的方式是您可以通过一次连接获得所有信息。多个联接无助于提高性能。请说明您希望最终结果的样子。
-
Erica - 所以你是说 unique_id 对你的 sessionpage 表中的 URL 不是唯一的? (换句话说,您在该表中的多个 ID 下具有相同的 URL)
-
我更新了帖子以更加清晰。 sessionpage unique_id 是唯一的(每个 id 只映射一个 URL,每个 URL 也只有一个 id)。 unique_id 在会话中多次显示,在 page1、page2、page3、page4、page5 (一个或多个)下。