更新时间:2024-11-15 GMT+08:00
DELETE
功能描述
删除HStore表中的数据。
注意事项
- 如果需要删除表上的所有数据,建议使用TRUNCATE语法,可以有效提高性能同时减少空间膨胀。
- HStore表上的单条DELETE操作,会往Delta中插入一条type是D的记录,同时在更新内存更新链用于管理并发。
- HStore表上的批量DELETE操作,对于每个CU上的连续DELETE,会插入一条type是D的记录。
- 对于并发DELETE场景, 传统列存储格式由于同时操作相同CU时会阻塞所以并发性能较差, 对于HStore表由于不需要阻塞等待,并发DELETE性能可达到列存的百倍以上。
- 语法完全兼容列存,更多信息可以参考UPDATE语法。
语法格式
1 2 3 |
DELETE FROM [ ONLY ] table_name [ * ] [ [ AS ] alias ] [ USING using_list ] [ WHERE condition ] |
参数说明
- ONLY
如果指定ONLY则只有该表被删除;如果没有声明,则该表和它的所有子表将都被删除。
- table_name
目标表的名字(可以有模式修饰)。
取值范围:已存在的表名。
- alias
目标表的别名。
取值范围:字符串,符合标识符命名规范。
- using_list
using子句。
- condition
一个返回boolean值的表达式,用于判断哪些行需要被删除。
示例
创建表reason_t2:
1 2 3 4 5 6 7 |
CREATE TABLE reason_t2 ( TABLE_SK INTEGER , TABLE_ID VARCHAR(20) , TABLE_NA VARCHAR(20) )WITH(ORIENTATION=COLUMN, ENABLE_HSTORE=ON); INSERT INTO reason_t2 VALUES (1, 'S01', 'StudentA'),(2, 'T01', 'TeacherA'),(3, 'T02', 'TeacherB'); |
使用WHERE条件删除:
1 2 |
DELETE FROM reason_t2 WHERE TABLE_SK = 2; DELETE FROM reason_t2 AS rt2 WHERE rt2.TABLE_SK = 2; |
使用IN语法删除:
1
|
DELETE FROM reason_t2 WHERE TABLE_SK in (1,3); |
父主题: 实时数仓语法