![SAP HANA 技能[一] 常用语法说明](https://p.adil.com.cn/2021-03-19-HANA-4.png)
SAP HANA 技能[一] 常用语法说明
前置说明
本篇基于SAP HANA的一些基础语法,大佬请饶~
SCHEMA相关
1 | --创建schema: |
TABLE
HANA数据库可以存储ROW TABLE(行表)和COLUMN TABLE(列表),分别适用于不同的场景。
创建表
行存储表适用于场景:
- 一次处理一条记录的情况
- 应用需要访问完整记录或记录的大部分(即一条记录中的所有字段或大多数字段)
- 不需要压缩率
- 没有或很少的聚集、分组等复杂操作
- 表中的记录行数不是很多
列存储表适用场景:
- 通常只是在一个或少量列上执行计算操作
- 表在进行搜索时通常基于少量列上的值
- 表有很多列
- 表有很多行,并且通常进行的是列式操作(比如:聚集计算和where中字段值查找)
- 需要很高的压缩率
代码实例
1 | --行存储表示例: |
在上面的创建列表的例子中,我们指定的“UNIQUE”或“PRIMARY KEY”约束,HANA会自动创建相应的索引。这些索引分为两种类型(仅适用于列表)
- INVERTED VALUE 适合于范围查询或like查询
- INVERTED HASH 使用HASH对组合唯一键或组合主键进行编码和压缩。对于等值查询(点查询),这种索引类型具有更好的性能;并且能够减少组合主键存储使用的内存数量。
如果不指定,缺省是 INVERTED VALUE。上面的INVERTED VALUE和INVERTED HASH 仅在UNIQUE和PRIMARY KEY约束中使用。下面是指定的示例
1 | PRIMARY KEY INVERTED VALUE (l_orderkey,l_linenumber) |
HANA除了直接建表外,也可以通过已存在的表创建新表,示例如下:
1 | /*依据某个已经存在的表创建另外的新表。HANA SQL提供了两类方法*/ |
修改表
修改表名
1 | --01.语法:RENAME TABLE <old_table_name> TO <new_table_name> |
修改表类型
1 | ALTER TABLE accounts COLUMN THREADS 10 BATCH 10000; --行存储表转为列存储表 |
参数说明:
- THREADS:指定表转换时的并行执行线程数。线程数的最佳值是系统可用 CPU 内核数。如果未提供 THREADS,将使用 indexserver 中指定的 CPU 内核数的默认值。
- BATCH:指定批量处理的行数。如果未指定 BATCH,将使用默认值 2000000。在每次达到批量处理的行数后将立即提交到列存储表中。BATCH 选项仅在从行转换为列存储时才能使用。
修改表约束
1 | --删除/增加主键 |
修改字段
1 | --增加或删除字段 |
INDEXES
1 | --SAP HANA的索引都是保存在内存中。 |
Dummy
Dummy是HANA中内置的一张虚拟表,可以用来测试函数或者是临时调用,方法很多,后面会详细解释。
1 | -- 查询当前日期,当前时间 |
- 感谢您的赞赏
赞赏名单
由于您的支持,我才能够实现写作的价值。
本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自Adil
评论 ()