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

列总和上的SQL索引-可能吗?,sql,performance,indexing,Sql,Performance,Indexing,给定两个表,T1列a和T2列b,是否可以对T1.a+T2.b列的总和应用索引?我最近遇到了一个关于这个索引的问题,我感到非常惊讶,因为问题不是它是否可能(我认为不可能),而是它是否会加速一些示例查询。 如果可能的话,我们到底在做什么?在像这样的查询中,T1.a+T2.b=3或者在其他一些情况下,它会有帮助吗?谢谢 根据您的SQL产品,可以为包含group by的视图编制索引,以获取持久化的摘要值 但是 这是一个本地优化(谷歌“无免费午餐”),因为它将为您带来更快的选择性能,而其他人的插入和更新速

给定两个表,
T1
a
T2
b
,是否可以对
T1.a+T2.b
列的总和应用索引?我最近遇到了一个关于这个索引的问题,我感到非常惊讶,因为问题不是它是否可能(我认为不可能),而是它是否会加速一些示例查询。
如果可能的话,我们到底在做什么?在像
这样的查询中,T1.a+T2.b=3
或者在其他一些情况下,它会有帮助吗?谢谢

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

但是


这是一个本地优化(谷歌“无免费午餐”),因为它将为您带来更快的选择性能,而其他人的插入和更新速度则会更慢。

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

但是

这是一种局部优化(谷歌“无免费午餐”),因为它将为您带来更快的select性能,而其他人的插入和更新速度较慢。

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

在像
这样的查询中,T1.a+T2.b=3
或者在其他一些情况下,它会有帮助吗

这完全取决于查询以及编译器决定使用什么计划来计算查询。如果筛选两列的总和,并且满足该条件的记录相对较少,则是,索引将减少查找匹配记录所需的扫描量。

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

在像
这样的查询中,T1.a+T2.b=3
或者在其他一些情况下,它会有帮助吗


这完全取决于查询以及编译器决定使用什么计划来计算查询。如果您根据两列的总和进行筛选,并且满足该标准的记录相对较少,那么是的,索引将减少查找匹配记录所需的扫描量。

索引是特定于产品的,您使用的是哪种dbms?问题应该与实现无关,并适用于所有dbms-s。比如说Oracle,因为我相信询问者每天都在使用Oracle,但它并不适用于所有dbms。如果目标是加快查询速度,那么计算部分的索引就没有太大意义。-也许可以为速度创建一个物化视图……您能否提供一些简单的示例,说明这样的索引可以加速查询?或者它在所有情况下都是无用的?索引是特定于产品的,您使用的是哪种dbms?这个问题应该是独立于实现的,并且适用于所有dbms-s。比如说Oracle,因为我相信询问者每天都在使用Oracle,但它并不适用于所有dbms。如果目标是加快查询速度,那么计算部分的索引就没有太大意义。-也许可以为速度创建一个物化视图……您能否提供一些简单的示例,说明这样的索引可以加速查询?或者它在所有情况下都是无用的?所以假设在给定的dbms中是可能的,那么该索引是否会加快
T1.a+T2.b=x
WHERE
子句的查询速度?或者它在其他情况下有用还是根本不有用?因此,假设在给定的dbms中是可能的,那么该索引是否会使用
T1.a+T2.b=x
WHERE
子句加快查询速度?或者它在其他情况下是否有用?