我发现Google和百度上关于HANA DB Hint的中文介绍比较少,所以就写了这一篇。本文部分内容来自SAP note 2142945 – FAQ: SAP HANA Hints。

什么是SAP HANA Hint

HANA Hint是SAP14 HANA数据库服务器执行的一种指令。HANA Hint会影响一个数据库请求的生成和处理的方式,但绝不会改变这些数据库请求的响应结果。通俗的说,如果你不用Hint, 执行某条SQL语句查询到了N条记录。那么用了Hint,查询结果仍然是N条。HANA Hint通常用来进行HANA的性能调优,比如对执行某条SQL语句CPU或者内存占用率的优化。

SAP HANA Hint有下列几种类型:

1. SAP HANA DB Hints

直接用于HANA Studio的SQL语句里。通过select * from hints能够拿到当前版本的HANA支持的所有Hint. 在我用的HANA服务器上总共216个:

用法: 如下图红色下划线所示:

如果您的Netweaver用的数据库是HANA,而您又想把这些Hint用在ABAP Open SQL里,那么可以使用语法: %_HINTS HDB后跟Hint的具体内容。例如下图:

如果Netweaver的版本小于740, 需要将HDB替换成ADABAS。

2. SAP ABAP Hints

对于那些Netweaver用的数据库是非HANA DB的场景,需要使用数据库提供商特定的Hint。具体细节可以查询对应的SAP note。

  • 130480 Database hints in Open SQL for Oracle

  • 133381 Database hints in Open SQL for MS SQL Server

  • 150037 Database hints in Open SQL for DB6 (DB2 UDB)

  • 152913 Database hints in Open SQL for Informix

  • 162034 DB2/390: Database hints in Open SQL

  • 485420 iSeries: Database hints for Open SQL/Native SQL

  • 652096 Database hints in Open SQL for SAPDB / MaxDB

  • 1702338SYB: Database hints in Open SQL for Sybase ASE

在ABAP的OPEN SQL里使用方法类似,把 %_HINTS后的HDB替换成指定数据库提供商的代号,再加上数据库提供商特定的Hint.

ABAP支持的数据库提供商的代号在ABAP help里能查到。

3. SAP HANA Calculation View Hints

  • ce2qo_disable_unfolding
  • ce2qo_for_nested_views_with_sql_execution
  • enable_star_join_ceqo
  • ce2qo_for_unit_conversion
  • qo_pop_hints
  • query_level_sql_hints

这种类型的Hint用于HANA Studio里创建的Calculation View,而非ABAP Development Tool创建的CDS(Core Data Service) View. 我没有用过,没法举例。

更多细节请查询SAP note 2509161。

常用的HANA Hint介绍

详细列表能在note 2142945的正文里找到,这里就不赘述了。值得一提的是,并没有一个统一的最佳实践指明了诸如”应用某某hint就一定能提高性能”。Hint的使用需要根据具体的SQL语句来分析,没办法一概而论。

最极端的例子就是这对互斥的Hint: CS_JOIN 和NO_CS_JOIN, 它们分别用于建议HANA数据库采用或者不采用Column Store Join来响应数据请求。

我的一个实际工作中的例子:这个简单的报表从HANA数据库中读取100条描述信息包含了文本”2017-12-11″的服务订单:

总共花费了15秒钟:

而当我加上NO_CS_JOIN的hint之后,

性能提升到不到1秒即完成了数据查询。

在note 2142945的末尾还包含很多其他有用的note。将来如果工作需要,我会将这些note陆续翻译成中文并加上自己的理解。

希望本文能帮助您对SAP HANA Hint有一个最基本的认识。您可以关注我的微信公众号”汪子熙“获得我的更多原创SAP技术文章。

SAP HANA Hint简介的更多相关文章

  1. 【HANA系列】SAP HANA 2.0简介

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA 2.0简介   ...

  2. SAP HANA中的SLT简介

    在以SAP系统作为主要ERP的企业中,不同系统之间的数据库数据同步是个重要的工作.对于这种需求,除了开发ABAP接口之外,也有高效的工具可用.SLT就是其中之一. SLT是SAP的第一个ETL(Ext ...

  3. 【HANA系列】SAP HANA XS使用Data Services查询CDS实体【一】

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA XS使用Dat ...

  4. 【HANA系列】SAP HANA XS使用JavaScript数据交互详解

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA XS使用Jav ...

  5. SAP NOTE 1999997 - FAQ: SAP HANA Memory

    Symptom You have questions related to the SAP HANA memory. You experience a high memory utilization ...

  6. 【HANA系列】【第七篇】SAP HANA XS使用Data Services查询CDS实体【一】

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列][第七篇]SAP HANA XS ...

  7. 报表软件FineReport如何连接SAP HANA

    1. 环境搭建 1.1 环境准备 首先确认HANA Studio的环境是否允许工程进行NewFile的操作,不行的话要考虑更新Studio的版本. HANAStudio需要依赖Java jdk1.6或 ...

  8. 学习SAP HANA SQL

      学习SAP HANA SQL 语句(创建 EMP,DEPT,BONUS 和 SALGRADE测试表)--像学Oracle一样学习SAP HANA 标签: sap测试oraclesqltableda ...

  9. SAP HANA专题分析目录

    针对HANA的关键技术领域, 做深度解析. 1. HANA开发规范 HANA 各种对象的应用解析.版本管理,开发规范. 2. HANA系统管理 用户.系统权限.数据权限的深度解析. HANA系统配置. ...

随机推荐

  1. [转] Spring Integration 系统集成

    [From] http://blog.csdn.net/w_x_z_/article/details/53316618 pring Ingegration 提供了基于Spring的EIP(Enterp ...

  2. HDU4499

    In Chinese Chess, there is one kind of powerful chessmen called Cannon. It can move horizontally or ...

  3. 对象池3(方法功能)PoolManager(控制)PoolTimeObject(时间管理)text01(调用)Destorys(销毁)

    1.对象池PoolManager namespace kernal { public class PoolManager : MonoBehaviour { //“缓冲池”集合 public stat ...

  4. (转)10 分钟内快速构建能够承载海量数据的 nginx 日志分析与报警平台

    10 分钟内快速构建能够承载海量数据的 nginx 日志分析与报警平台 原文:https://blog.qiniu.com/archives/8713

  5. Ace向你推荐一些实用的干货库~开发安卓的好帮手

    1 毁灭地球的军火库arsenal- 你想要的枪这里都有卖 哈哈哈哈 , http://android-arsenal.com/ 2 黑科技---在线反编译----嘿嘿嘿  在线反编译 方便简单 客官 ...

  6. 现学现卖】IntelliJ+EmmyLua 开发调试Unity中Xlua

    http://blog.csdn.net/u010019717/article/details/77510066?ref=myread http://blog.csdn.NET/u010019717 ...

  7. 清除浮动clear-left-right-both-none效果

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  8. php高手干货【必看】

    1.用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量, 单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的"函数&quo ...

  9. 数据降维(Dimensionality reduction)

    数据降维(Dimensionality reduction) 应用范围 无监督学习 图片压缩(需要的时候在还原回来) 数据压缩 数据可视化 数据压缩(Data Compression) 将高维的数据转 ...

  10. Java入门系列-06-运算符

    这篇文章为你搞懂2个问题 java 中的常用运算符有哪些?如何使用? 这些运算符的运算优先级是怎样的? 算数运算符 明显是做数学运算的,包括以下符号: + 加法运算 敲一敲: public class ...