列的总和上的SQL索引 - 可能吗?

时间:2016-05-20 12:19:51

标签: sql performance indexing

给定两个表,T1aT2b,是否可以将索引应用于列T1.a + T2.b的总和?我最近得到了一个涉及这个索引的问题并且非常惊讶,因为问题不是它是否可能(我相信不是),而是它会加速一些示例查询。 如果有可能,我们究竟要编入什么索引?它会在WHERE T1.a+T2.b = 3等查询或其他情况下有用吗?谢谢!

2 个答案:

答案 0 :(得分:1)

根据您的SQL产品,可以索引包含group by的视图以获取持久化的摘要值。

<强>无论其

这是一项本地优化(google&#34;没有免费午餐&#34;),因为它会为您带来更快的选择性能,但会降低其他人的插入和更新速度。

答案 1 :(得分:1)

是的,大多数(并非所有)数据库系统都允许您在表达式的结果上创建索引,因此在这些系统中可以创建两列总和的索引。

  

WHERE T1.a+T2.b = 3等查询或其他情况下,它会有用吗?

这完全取决于查询以及编译器决定用于评估查询的计划。如果您对两列的总和进行过滤,并且符合该条件的记录相对较少,那么索引将减少查找匹配记录所需的扫描量。