如何从雪花数据库中的表中删除前 N 条记录
Posted
技术标签:
【中文标题】如何从雪花数据库中的表中删除前 N 条记录【英文标题】:How to DELETE top N records from Table in Snowflake Database 【发布时间】:2020-08-21 12:30:17 【问题描述】:我想在Snowflake DB中执行DELETE
操作,有记录限制,我的要求是批量执行DELETE
操作,比如先删除前1000条记录,然后再删除下1000条记录等等。
在 SQL Server 中,我们可以使用如下查询:
DELETE TOP (1000) FROM TABLE_NAME;
我正在寻找有关 Snowflake DB 的类似查询,我浏览了 Snowflake 文档以进行删除 - https://docs.snowflake.com/en/sql-reference/sql/delete.html,但我没有找到与 TOP
或 LIMIT
匹配的语法。
【问题讨论】:
【参考方案1】:这可能不是您正在寻找的答案,但您在 SQL Server 上删除 1000 个块的原因是因为 SQL Server 将这些记录到事务日志中,删除记录,更新索引等,而且更多以这种方式做事很有效率。在雪花中,它不是。
Snowflake 不记录删除,没有索引,事实上,它实际上并没有删除记录,而是重新创建这些记录来自的微分区,而不会删除记录。所以,事实上,在 Snowflake 中小批量删除实际上效率要低得多。相反,您应该简单地使用您希望删除的记录发出一条删除语句,然后让它完成它的工作。
【讨论】:
【参考方案2】:试试这个
DELETE FROM <TABLE>
WHERE <ID_COL> IN
(
SELECT TOP 2 <ID_COL> FROM <TABLE>);
【讨论】:
以上是关于如何从雪花数据库中的表中删除前 N 条记录的主要内容,如果未能解决你的问题,请参考以下文章