You need to enable JavaScript to run this app.
ByteHouse 企业版

ByteHouse 企业版

复制全文
DML
删除语句 (DELETE)
复制全文
删除语句 (DELETE)

如需在 ByteHouse 中删除数据,可通过 ALTER DELETE 方式,更多操作详情请参考删除操作(DELETE)

注意

  • 对于 HaMergeTree 表,DELETE WHERE 只能在本地(local)表上操作,不支持在分布式表操作。
  • 仅 ByteHouse 企业版 v2.4 及以上版本支持 DELETE WHERE 语法。
  • 执行DELETE WHERE语法会触发全表扫描,同时改写所有包含数据的数据块,易给集群造成显著负载压力,严禁频繁执行。
  • 对于已开启冷存的表,需谨慎使用DELETE WHERE语法,以避免引发更大的性能损耗及集群压力。
  • 如果您使用的是 HaUniqueMergeTree 和 HaMergeTree 表,且需大量删除数据,推荐使用 FAST DELETE,详情请参见FAST DELETE

语法

ALTER TABLE [tableIdentifier] DELETE [IN PARTITION partition_id] WHERE filter_expr;

参数说明
IN PARTITION partition_id:可选,如果表数据量较大,或者表的 part 数量较多,建议添加该条件,分区级别执行 delete 操作,更快、更稳定。

示例

-- 1. 创建库
CREATE DATABASE IF NOT EXISTS sample_db ON CLUSTER sample_cluster;

-- 2. 创建测试表
DROP TABLE IF EXISTS sample_db.sample_table_local ON CLUSTER sample_cluster;
DROP TABLE IF EXISTS sample_db.sample_table ON CLUSTER sample_cluster;
CREATE TABLE IF NOT EXISTS sample_db.sample_table_local ON CLUSTER sample_cluster
(
    `order_by_column` String,
    `partition_column` Date,
    `browser` String,
    `hour` Int32,
    `x` Int32,
    `p` Int32
) ENGINE = HaMergeTree('/clickhouse/tables/{shard}/{database}/local_table_name', '{replica}')
PARTITION BY partition_column
ORDER BY (`order_by_column`);

CREATE TABLE sample_db.sample_table
    AS sample_db.sample_table_local
    ENGINE = Distributed(sample_cluster, sample_db, sample_table_local, hour);

-- 3. 插入数据
INSERT INTO sample_db.sample_table_local ON CLUSTER sample_cluster
VALUES
('order1', '2020-11-21', 'chrome', 8, 10, 2),
('order2', '2020-11-02', 'chrome', 8, 10, 2),
('order3', '2020-10-05', 'firefox', 9, 20, 2);

-- 4. 删除数据
ALTER TABLE sample_db.sample_table_local ON CLUSTER sample_cluster 
    DELETE WHERE browser = 'firefox';

-- 5.查询删除是否成功
SELECT * 
FROM clusterAllReplicas(sample_cluster, system.mutations) 
WHERE 
database = 'sample_db' 
AND table = 'sample_table_local';

说明

当返回值中is_done字段返回值为 1时,代表删除操作执行成功。

最近更新时间:2026.02.04 15:43:45
这个页面对您有帮助吗?
有用
有用
无用
无用