这个索引会提高查询性能吗?

时间:2017-05-23 19:26:53

标签: sql-server indexing

我有一个包含超过300M Web请求日志的表。所有这些都有时间戳和URL。

我正在考虑打破两个额外列的时间戳:日期和时间。这一举措背后的想法是,我在日期(分析一个月或一周的流量时)或小时+分钟(分析日内流量时)执行大量攻击(分组)。 / p>

我也在考虑将控制器+动作上的URL作为时间戳打破,原因相同。

我还计划索引新列。所以我的问题是:

  • “列中断”+索引是否会提高查询效果?
  • 按日期分组时,有时我也会在where子句中使用客户ID。这应该也包括在这个索引中(如果是,作为索引键或包含列?)或者这个应该有自己的索引(我有大约300个客户端)
PS:我问这个问题,而不是直接运行测试并亲自看看这个,因为这是一个昂贵的构建索引,在我们当前的环境中需要很长时间。

EDIT1
我打算通过

获取请求数
  • 星期几(group by DATEPART(DW,timestamp)
  • 周(group by DATEPART(Week,timestamp)
  • 一天中的小时(group by DATEPART(HOUR,timestamp)
  • 一天中的小时和一周中的某一天(group by DATEPART(DW,timestamp),DATEPART(HOUR,timestamp)

1 个答案:

答案 0 :(得分:0)

@Leonardo,

如果您处于Data WareHouse环境(如只读)并且您正在使用列存储索引,则答案是肯定的。不同的日期和时间的数量分别允许更多的压缩,你会真正注意到差异。

如果不是这种情况,也许您应该查看索引上的以下链接(快速免费视频)并了解这些索引更改将会做什么。
您是否检查了查询计划以查看瓶颈在哪里?

以下是链接:https://www.brentozar.com/archive/2016/10/think-like-engine-class-now-free-open-source/