SQL最佳方法点击次数和表单提交

问题描述:

我需要统计我网站中特定链接的点击次数以及访问者发送的电子邮件数量。SQL最佳方法点击次数和表单提交

的问题是:

我已经有产品表和它的说明(我想计算点击次数),我想我应该扩展该表并创建两个字段,使发出的点击次数和电子邮件但也许我可以通过另一种方式来做,通过引用产品ID创建一个单独的表,其中只包含两个使此计数的字段。

你认为这是最好的方法呢?

我的点击和电子邮件存储在单独的表,而不是将其添加为新列的“产品”表。

的数据在逻辑上是不同的 - “产品”应该包含产品的定义。事实上,某人点击该产品的链接不属于该定义的一部分 - 这是一个完全独立的事件。正如本文所说,它可能也会对性能产生影响。

我还可以看到需求在未来扩展 - 你可能需要能够跟踪每个用户类型,或任何每天的点击,或点击;我会考虑将点击和电子邮件的原始数据存储在表格中,并将其加入产品表格。

例如:

table CLICK 
id (PK) 
product_id (FK to products) 
date 
time 
user_id (FK to users, if that exists) 

记录插入该表每次点击;要运行您的报告,您需要返回产品以获取描述,并使用count()和group by来获取正确的数据。

如果你为你的产品表只是你可以添加它直接出现,以避免在不同的表重复的主键,创建单独的存储过程,将被用来访问你的表这将包含点击计数和表将包含您的产品信息,你也可以避免使用连接语句,只要你有做,将需要的结果从两个表,当然你可以最小化数据的select语句这样做的冗余。

另一个FYI具有两列的表通常是交叉引用表,这只是理想的,用于存储相关的实体之间的关系。

扩展产品表,这些领域可能不是一个好主意,因为点击电子邮件计数将非常频繁地更新,从而使您的产品表(或至少它包含了一些行)进行读/写经常上锁。从产品表读取数据并导致网站速度变慢时,这可能会导致大量延迟。我会去单独的表路线。

艾伦就在这里。如果你打算分开两张桌子,延迟也是一个问题。连接两个表格显然要慢得多,而不是简单但非常有效的选择语句。

我宁愿使用:

SELECT ProductID, ProductName, ClickCount, Email FROM tblProducts 

而不是

SELECT p.ProductID, p.ProductName, px.ClickCount, px.EmailCount 
FROM tblProducts p 
INNER JOIN tblProductsXRefClickAndEmail px ON p.ProductID = px.ProductID