HANA VARCHAR列上的索引

2020-09-17 05:41发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我有一个包含40亿条记录的范围分区表,从2017年1月1日到012019年每个月一个分区,我的视图执行得很糟糕,并且从解释计划中看到的是连接状态需要花费更多时间

加入条件:(内部)BCD.FLD_SQN = DMT.FLD_SQN,(内部)CST.ST_SQN = FP.ST_SQN,(内部)FP.CO_SQN = DI.CO_SQN,(内部)BCD.JUNK_SQN = FP.JUN/p>

挖掘更多,我看到

(BCD.FUNC_CODE = n'GROSS')或(BCD.FUNC_CODE = n'IC')OR(BCD.FUNC_CODE = n'SOLO')OR(BCD.FUNC_CODE = n'NETT')此返回23,911,300行

Func_code是一个varchar列,在十亿行中只有4个不同的值,

在Func_code上创建索引是个好主意吗? 如果是,则是否有任何特定的索引?

PS:表目前没有主键或其他索引

谢谢

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我有一个包含40亿条记录的范围分区表,从2017年1月1日到012019年每个月一个分区,我的视图执行得很糟糕,并且从解释计划中看到的是连接状态需要花费更多时间

加入条件:(内部)BCD.FLD_SQN = DMT.FLD_SQN,(内部)CST.ST_SQN = FP.ST_SQN,(内部)FP.CO_SQN = DI.CO_SQN,(内部)BCD.JUNK_SQN = FP.JUN/p>

挖掘更多,我看到

(BCD.FUNC_CODE = n'GROSS')或(BCD.FUNC_CODE = n'IC')OR(BCD.FUNC_CODE = n'SOLO')OR(BCD.FUNC_CODE = n'NETT')此返回23,911,300行

Func_code是一个varchar列,在十亿行中只有4个不同的值,

在Func_code上创建索引是个好主意吗? 如果是,则是否有任何特定的索引?

PS:表目前没有主键或其他索引

谢谢

付费偷看设置
发送
2条回答
派大星 ヾ
1楼-- · 2020-09-17 06:05

好的,让我们看看您提供了哪些信息:

  • 总表大小 40亿条记录
  • 在名为FUNC_CODE的列上过滤条件,该条件对该列的4个不同值(" GROSS"," IC"," SOLO"," NETT")进行过滤
  • 此过滤条件返回大约2400万条记录(占总表的166th)。
  • 剩余的记录(3760亿!)必须在FUNC_CODE中具有NULL或不同的文本值,就像您提到的那样,该列只有4个不同的值。
  • 然后对另一个我们不了解的其他表进行内部联接
  • 此外,这些表没有任何主键,因此格式也不正常

我们不知道的是:

  • 另一个表的大小和联接匹配数
  • HANA版本
  • 完整的SQL语句
  • 解释计划
  • 是否对FUNC_CODE列进行过滤实际上占用了响应时间的很大一部分(PlanViz可以告诉您)。

因此,总而言之,这里的信息太少,不足以证明在FUNC_CODE列上创建反向索引是合理的。 可能对语句运行时间没有任何影响。

huskylover
2楼-- · 2020-09-17 06:13

感谢Lars,是的,创建索引并没有提高查询性能。

一周热门 更多>