更新时间: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);