OceanBase 数据库支持 Oracle 数据库中绝大部分的 SQL 语法。
少数功能性缺失会报语法不支持的错误。
SELECT
支持大部分查询功能,包括支持单、多表查询;支持子查询;支持内连接,半连接,外连接;支持分组、聚合;支持层次查询;常见的概率,线性回归等数据挖掘函数等。
支持如下集合操作:UNION、UNION ALL、INTERSECT、MINUS。
支持如下语法查看执行计划:
EXPLAIN [explain_type] dml_statement;
explain_type:
BASIC
| OUTLINE
| EXTENDED
| EXTENDED_NOADDR
| PARTITIONS
| FORMAT = {TRADITIONAL| JSON}
dml_statement:
SELECT statement
| DELETE statement
| INSERT statement
| MERGE INTO statement
| UPDATE statement
INSERT
支持单行、多行插入,同时支持指定分区插入
支持 INSERT INTO ... SELECT ... 语句
支持单表和多表插入
UPDATE
支持单列和多列的更新
支持使用子查询
支持集合更新
DELETE
支持单表和多表的删除
TRUNCATE
支持完全清空指定表
并行查询
支持类 Oracle 数据库的并行查询
OceanBase 数据库支持 Auto DOP 功能,也可以手动通过 Hint 或者 Session 变量指定 DOP。
支持并行 DML
Hint
OceanBase 数据库支持使用 Hint。Oracle 数据库中有 72 个 Hint,目前 OceanBase 数据库兼容 24 个。另外,OceanBase 数据库特有的 Hint 有 23 个。
Hint 是一种 SQL 语句注释,用于将指令传递给 OceanBase 数据库优化器。通过 Hint 可以使优化器生成指定的执行计划。
一般情况下,优化器会为用户查询选择最佳的执行计划,不需要用户使用 Hint 指定,但在某些场景下,优化器生成的执行计划可能无法满足用户的要求,这时就需要用户使用 Hint 来主动指定并生成特殊的执行计划。
Hint 应该尽量少用,在收集了相关表的统计信息并且在没有 Hint 的情况下使用 EXPLAIN PLAN 语句评估了优化器计划之后,才建议用户谨慎考虑使用 Hint。更改数据库条件以及在后续版本中增强查询性能可能会导致您代码中的 Hint 对性能产生重大影响。