我有一个包含超过300M Web请求日志的表。所有这些都有时间戳和URL。
我正在考虑打破两个额外列的时间戳:日期和时间。这一举措背后的想法是,我在日期(分析一个月或一周的流量时)或小时+分钟(分析日内流量时)执行大量攻击(分组)。 / p>
我也在考虑将控制器+动作上的URL作为时间戳打破,原因相同。
我还计划索引新列。所以我的问题是:
where
子句中使用客户ID。这应该也包括在这个索引中(如果是,作为索引键或包含列?)或者这个应该有自己的索引(我有大约300个客户端) EDIT1
我打算通过
group by DATEPART(DW,timestamp)
)group by DATEPART(Week,timestamp)
)group by DATEPART(HOUR,timestamp)
)group by DATEPART(DW,timestamp),DATEPART(HOUR,timestamp)
)答案 0 :(得分:0)
@Leonardo,
如果您处于Data WareHouse环境(如只读)并且您正在使用列存储索引,则答案是肯定的。不同的日期和时间的数量分别允许更多的压缩,你会真正注意到差异。
如果不是这种情况,也许您应该查看索引上的以下链接(快速免费视频)并了解这些索引更改将会做什么。
您是否检查了查询计划以查看瓶颈在哪里?
以下是链接:https://www.brentozar.com/archive/2016/10/think-like-engine-class-now-free-open-source/