简介
SAP HANA功能(如计算视图和CD)允许指定联接的基数,以提高执行性能。基数指定在联接其他表时与这些表匹配的行数。使用SPS04,在普通SQL中也可以使用此功能。
通过向SQL优化器证明不同表如何连接的更多信息,基数可用于创建更优化的计划。
先前的SPS04:
由于SPS04:
语法
select语句的join部分现在包含另一个可选部分–基数规范。
在可选的连接类型,可选的基数规格如下,这是默认未指定。在这之后,返利微信,已经知道的JOIN关键字以及表和JOIN条件都会出现。
基数是两部分的乘积:左侧的基数和右侧的基数。这些是可能的基数,可以以任何方式组合:
用法
为了显示基数特性的示例,最初创建了两个基表,并用示例数据填充。第一个表包含销售数据,第二个表包含员工信息。这两个表通过sales order表中的employee ID和employees表中的ID连接起来,
要选择所有有销售订单的员工,可以使用以下SQL:
此语句返回:
如上所述,每个员工可以创建零个、一个或多个销售订单,所以基数是一对多。因此,可以在语句内部使用它来为SQL优化器提供更多信息,从而提高性能:
连接修剪
基数的指定可以提高性能,因为可以创建更优化的计划。因此,如果满足某些条件,淘客返利系统,这可能导致连接修剪(跳过连接的执行)。下面的示例中描述了该功能。
要以更有意义的方式组合示例表的数据,可以创建一个视图:
此视图上的select语句可能只使用可用列的子集,例如:
即使只请求三个数据源中两个的列,也会执行所有联接,淘客采集软件,如中所示解释计划:
为了向SQL优化器提供更多细节,可以使用CREATE VIEW语句中的基数:
现在,与上面相同的select只返回一个连接的更优化的计划:
意外结果
错误的基数信息可能导致意外结果,大数据分析培训课程,因为优化器可以创建不同的计划根据信息的不同,
下面的查询将获取所有员工及其经理的姓名。如果此人没有管理者,云快卖,则管理者名称使用null:
此查询生成此结果集:
基数的指定是强大的功能,可以提高性能,但如果指定错误,可能会导致意外的结果。
提示
以下提示可用于连接基数的上下文:
连接\删除\使用\基数:告诉优化器更喜欢连接删除(连接修剪),如果可能
不使用\连接\删除\使用\基数:告诉优化器不喜欢连接删除(连接修剪)。此提示可用于排除意外结果。
检查联接基数:创建一个特殊计划,其中检查每个联接的基数冲突,并在发生时引发异常。
参考
SAP HANA平台的SAP HANA SQL和系统视图参考–选择语句
SAP HANA SQL和系统视图参考SAP HANA平台–提示详细信息