给定两个表,T1
列a
和T2
列b
,是否可以将索引应用于列T1.a + T2.b
的总和?我最近得到了一个涉及这个索引的问题并且非常惊讶,因为问题不是它是否可能(我相信不是),而是它会加速一些示例查询。
如果有可能,我们究竟要编入什么索引?它会在WHERE T1.a+T2.b = 3
等查询或其他情况下有用吗?谢谢!
答案 0 :(得分:1)
根据您的SQL产品,可以索引包含group by的视图以获取持久化的摘要值。
<强>无论其强>
这是一项本地优化(google&#34;没有免费午餐&#34;),因为它会为您带来更快的选择性能,但会降低其他人的插入和更新速度。
答案 1 :(得分:1)
是的,大多数(并非所有)数据库系统都允许您在表达式的结果上创建索引,因此在这些系统中可以创建两列总和的索引。
在
WHERE T1.a+T2.b = 3
等查询或其他情况下,它会有用吗?
这完全取决于查询以及编译器决定用于评估查询的计划。如果您对两列的总和进行过滤,并且符合该条件的记录相对较少,那么索引将减少查找匹配记录所需的扫描量。